2013-02-13 2 views
1

Прошу прощения, если это дубликат, но я не могу найти ничего там, что включает в себя разделение строки на основе символа count. Например, предположим, что у меня есть следующая строка:Как я могу разбить строку в 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. 

Теперь я могу разделить строку на основе определенного характера, но как я могу разделить эту строку после п го характера, независимо от того, что он является? Что-то вроде этого, только с рабочим синтаксисом, я думаю:

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 

Любая помощь будет оценена. Благодаря!

Update

Я хотел отправить это обновление, так как мой вопрос только подошел половину моей проблемы. Благодаря ответу Мартиджина ниже я легко нарезал строку выше. Однако, поскольку строка, которую я редактировал, была отправлена ​​пользователем, я столкнулся с проблемой сокращения слов пополам. Чтобы исправить эту проблему, я использовал комбинацию 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 = '' 

Теперь, я уверен, что есть более эффективный/элегантный способ сделать это, но это все еще работает так, надеюсь, кто-то может извлечь из этого выгоду. Благодаря!

ответ

5

Вы ищете slicing:

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

строки Python являются последовательности, чтобы выбрать первые max_char символы, просто использовать кусочек, чтобы выбрать те, и во второй половине выбрать все начиная в max_char до конца ,

Это covered in the Python tutorial.

+0

Отлично, спасибо Martijn! –

2

Просто, чтобы улучшить свое окончательное решение: вы можете использовать string.find(' ', n), чтобы найти индекс первого пробела после символа n. Если вы хотите разбить это пространство (так что строка1 заканчивается пробелом, а не 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 
+0

Отлично! +1 для обновления моего решения. Благодаря! –

Смежные вопросы