2013-02-13 52 views
1

我很抱歉,如果這是一個重複,但我似乎無法找到任何東西,涉及分裂一個字符串計數。舉例來說,假設我有以下字符串:如何在特定字符數後分割Python中的字符串?

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ullamcorper, eros 
sed porta dapibus, nunc nibh iaculis tortor, in rhoncus quam orci sed ante. Sed 
ac dictum nibh. 

現在,我可以根據特定的字符分割字符串,但我怎麼能第n 字符後這個字符串分割,不管是什麼,是什麼?這樣的事情,只有一個工作語法是我在想什麼:

max_char = n #where n is the number of characters to split after 
MyText = 'User input string. This is usually at least a paragraph long.' 
char_count = len(MyText) 
if char_count > max_char: 
#split string at max_char, create variables: MyText1 and MyText2 

任何幫助,將不勝感激。謝謝!

更新

我想張貼此更新,因爲我的問題只有走近我的問題的一半。感謝Martijin的回答,我輕鬆地將上面的字符串切片。但是,由於我編輯的字符串是用戶提交的,所以我遇到了將單詞分成兩半的問題。爲了解決這個問題,我使用了rsplitrstrip的組合來正確地分段。以防萬一有人在那裏正面臨着同樣的問題我在這裏是我用來做它的代碼工作:

line1 = note[:36] 
line2 = note[36:] 

if not line1.endswith(' ', 1): 
line2_2 = line1.rsplit(' ')[-1] 
line1_1 = line1.rstrip(line2_2) 
line2_2 = line2_2 + line2 
line1 = '' 
line2 = '' 

現在,我敢肯定有這樣做的更有效的/優雅的方式,但這仍然有效,希望有人能從中受益。謝謝!

回答

5

您正在尋找slicing

MyText1, MyText2 = MyText[:max_char], MyText[max_char:] 

Python的字符串是序列,選擇第一個max_char字符,簡單地用一個片選擇那些和下半年選擇一切開始max_char直到結束。

這也是covered in the Python tutorial

+0

完美,謝謝Martijn! – 2013-02-13 19:18:56

2

只是爲了改進您的最終解決方案:您可以使用string.find(' ', n)來查找字符n之後的第一個空格的索引。如果你想在該空間之後進行拆分(以便string1以空格結束,而不是以1開始的字符串2),只需添加一個即可:

>>> print string 
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed ullamcorper, eros sed porta dapibus, nunc nibh iaculis tortor, in rhoncus quam orci sed ante. Sed 
>>> space_location = string.find(' ', 36)+1 
>>> print string[:space_location] 
Lorem ipsum dolor sit amet, consectetur 
>>> print string[space_location:] 
adipiscing elit. Sed ullamcorper, eros sed porta dapibus, nunc nibh iaculis tortor, in rhoncus quam orci sed ante. Sed 
+0

太棒了! +1用於升級我的解決方案。謝謝! – 2013-02-13 23:59:44