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の回答のおかげで、上の文字列を簡単にスライスできました。しかし、私が編集していた文字列はユーザ​​ーが投稿したものだったので、単語を半分にスライスするという問題に遭遇しました。この問題を解決するために、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 = ''

これを行うためのより効率的でエレガントな方法があると確信していますが、これはまだ機能するので、誰かが恩恵を受けることができれば幸いです。ありがとう!

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 の後の最初のスペースのインデックスを見つけるために使用できます。そのスペースの後で分割したい場合 (string2 が 1 で始まるのではなく、string1 がスペースで終わるようにするため)、それに 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 に答える