1

如果这是重复的,我深表歉意,但我似乎找不到任何涉及根据字符拆分字符串的内容。例如,假设我有以下字符串:

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在下面的回答,我轻松地将上面的字符串切分了。但是,由于我正在编辑的字符串是用户提交的,所以我遇到了将单词切成两半的问题。为了解决这个问题,我使用了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 = ''

现在,我确信有一种更有效/更优雅的方式来做到这一点,但这仍然有效,所以希望有人能从中受益。谢谢!

4

2 回答 2

5

您正在寻找切片

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

Python 字符串是序列,要选择第一个max_char字符,只需使用切片来选择这些字符,而后半部分则选择从开始max_char到结束的所有内容。

这也包含在 Python 教程中。

于 2013-02-13T17:59:14.233 回答
2

只是为了改进您的最终解决方案:您可以使用string.find(' ', n)查找字符 n 之后的第一个空格的索引。如果要在该空格之后拆分(以便 string1 以空格结尾,而不是 string2 以 1 开头),只需向其添加一个:

>>> 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
于 2013-02-13T21:18:23.863 回答