如果这是重复的话,我道歉但我似乎找不到任何涉及根据字符 count 拆分字符串的内容。例如,假设我有以下字符串:
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 th 字符之后拆分此字符串,无论它是什么?像这样的东西,只有一个有效的语法才是我的想法:
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的回答,我轻松地将上面的字符串切成薄片。但是,由于我正在编辑的字符串是用户提交的,我遇到了将单词切成两半的问题。为了解决此问题,我使用了rsplit
和rstrip
的组合来正确分解段落。以防有人在这里遇到与我相同的问题,这是我用来使其工作的代码:
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 = ''
现在,我确信有一种更有效/更优雅的方式来做到这一点,但这仍然有效,所以希望有人可以从中受益。谢谢!
答案 0 :(得分:5)
您正在寻找slicing:
MyText1, MyText2 = MyText[:max_char], MyText[max_char:]
Python字符串是序列,用于选择第一个max_char
个字符,只需使用切片选择那些字符,然后从后半部分选择从max_char
开始直到结束的所有内容。
答案 1 :(得分:2)
只是改进最终解决方案:您可以使用string.find(' ', n)
查找字符n后第一个空格的索引。如果你想在那个空格之后拆分(以便string1以空格结尾,而不是以一个开头的string2),只需添加一个空格:
>>> 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