1

Pythonを使用して文字列を分割したい。1 つの変数に対しては成功しましたが、2 に対しては難しいと感じました。

文字列:

Paragraph 4-2 says. i am going home$ early- Yes.

出力が必要です

Paragraph 4-2 says
i am going home 
early
Yes

文は., $andから分割する必要があり-ます (ただし、2 つの数字 (4-2) の間にある場合は分割しないでください)

これどうやってするの?

text.split('.')

アップデート

新しい出力は次のようになります。

Paragraph 4-2 says.
i am going home$ 
early-
Yes.
4

3 に答える 3

5
>>> import re
>>> s = 'Paragraph 4-2 says. i am going home$ early- Yes'
>>>
>>> re.split(r'(?<!\d)\s*[.$-]\s*(?!\d)', s)
['Paragraph 4-2 says', 'i am going home', 'early', 'Yes']
  • \s*[.$-]\s*のいずれかに一致するか、.0個以上のスペースで囲まれています ( )。$-\s*
  • (?<!\d)一致の前に数字がないようにするための負の後読みです。
  • (?!\d)一致の後に数字が続かないことを確認するための否定先読みです。

ルックアラウンドの詳細については、こちらをご覧ください

于 2013-07-27T15:54:24.853 に答える
4
>>> re.split('(?<=\D)[.$-](?=\D|$)', s)
['Paragraph 4-2 says', ' i am going home', ' early', ' Yes']
>>> 

(?<\D)[.$-](?=\D).$- を取得しますが、その後に整数が続くことも先行することもありません。また、先読みと後読みは文字列を消費しません。したがって、文字列は .$- のみで分割され、数字は囲まれません。

編集:

>>> re.findall('.*?(?<=\D)[.$-](?=[\D]|$)', s)
['Paragraph 4-2 says.', ' i am going home$', ' early-', ' Yes.']
于 2013-07-27T15:54:49.900 に答える