2014-09-13 90 views
1

我想要做的是:如何削減字符串轉換成字符串對在python

mystr = i_return_a_string() 
fst_part, snd_part = mystr[:4], mystr[4:] 

但我會更開心,如果可以做到這一點(有一個內置的函數/方法)像:

fst_part, snd_part = i_return_a_string().cut_at(4) 

這有點像str.partition,不同的是,我想指定索引。

  1. 有沒有一種方法呢?

  2. 如果不是,是我上面最好的方法嗎?

在這個例子中,mystr只需要作爲返回值(函數i_return_a_string的)臨時存儲,永遠不會被再次提及,這使我有點不舒服。

+0

你看過''''str'''方法的文檔嗎?嘗試編寫自己的功能,然後如果你有problrms張貼另一個問題。 – wwii 2014-09-13 14:58:14

+5

您使用切片的解決方案 - 'fst_part,snd_part = mystr [:4],mystr [4:]' - 是在Python中執行此操作的慣用方式。沒有內置的'cut_at'字符串方法或函數(但如果你喜歡,你可以寫一個)。 – 2014-09-13 14:58:24

+0

什麼是反對切片?如果你想跳過臨時的'mystr',你可以讓'i_return_a_string()'返回一個字符串元組 - 這是在函數內已經完成的切片。 – Ghanima 2014-09-13 15:00:08

回答

2

總結給出的意見(因爲我不敢把這個問題留給開放):

  • 使用切片是習慣的方法(@ZeroPiraeus)
  • 如果我真的沒有喜歡它,我可以寫我自己的函數(@wwii,@ZeroPiraeus & @ Bobby的答案),或者我可以改變基函數,使它已經返回一個元組(@Ghanima)
  • 使用臨時變量非常好(@MartijnPieters ,@ZeroPiraeus)。
  • 如果我真的真的需要使用內置的和無用的東西,總會有另一種方式(@myersjustinc的答案)。
+1

我希望這是一個答案,幾乎是一個完整的答案,當然不只是「附加信息」。上面列出的這些點基本上是我需要知道的。問:是否有這樣的方法? - > A:不,但你可以隨時寫一個。問:我最喜歡的方式是什麼? - >答:是的,不用擔心'mystr'變量。我不明白爲什麼這不被認爲是答案。 – Yosh 2014-09-14 15:30:57

1

如果你真的覺得有必要(雖然我認爲它更有意義,用mystr[:4], mystr[4:],而不是在你的例子),你可以使用正則表達式:

fst_part, snd_part = re.match(r'(.{4})(.*)', i_return_a_string()).groups() 
+1

不如原來的我認爲 – 2014-09-13 15:04:12

+2

我同意這不是一個好的解決方案,但它確實是OP所要求的。它不使用中間變量,它不涉及編寫另一個函數(因爲OP要求內置函數的原因),它涉及到只調用一次'i_return_a_string'函數。 – myersjustinc 2014-09-13 15:05:51

0

可能不是確切的語法你」重新尋找,但也許這是你的衚衕?

def i_return_a_string(): 
    return "examplestring" 

def cut_at(example_string, index): 
    return example_string[:index], example_string[index:] 

fst_part, snd_part = cut_at(i_return_a_string(), 4) 
print fst_part, snd_part 
+0

是的,這基本上是我想要的。我想知道是否有一種默認的方式來做到這一點,以及我是否應該自己編寫該函數或使用切片。 – Yosh 2014-09-13 15:15:16

+0

沒有什麼內置的。如果你打算使用這個功能,我會說寫自己的功能。您的原始語法讓我想起了Ruby語法,您可以輕鬆鏈接方法。 – Bobby 2014-09-13 15:40:55