2016-08-03 3 views
-3

私はPython 3.5を使用しています。文字列を文字で分割したいと考えています\n、または改行。ただし、行がアンダースコアで始まる場合は、たとえば、その行を上に置く必要があります。アンダースコアだけではなく、すべての文字を処理するソリューションが必要です。それは次のように動作するはずです:次の文字が何かでない限り、Pythonの分割

a = '''red 
yellow 
green 
_surprise! 
blue''' 

print(a.split('\n') 

とを生じるはずである:

['red', 'yellow', 'green\n_surprise', 'blue'] 

任意の助けをありがとう!

+0

これは 'str.split'を使ってのみ行うことができます。 're'モジュールを使うか、後で文字列を結合するだけです。 – Bakuriu

答えて

2

それは正規表現を使用して非常に簡単です:

import re 
re.split('\n(?!_)', a) 
# ['red', 'yellow', 'green\n_surprise!', 'blue'] 

この正規表現は、リテラルではsplit by \n not followed by _を意味します。

+0

これはとても簡単できちんとした+1です! – haifzhan

+0

このソリューションは非常にうまく動作します、ありがとう! – nedla2004

+0

歓迎します:-) –

0

あなたはどちらの一部の文字で\n_をrepalceして、区切り文字\n

>>> a = '''red 
... yellow 
... green 
... _surprise! 
... blue''' 
>>> a 
'red\nyellow\ngreen\n_surprise!\nblue' 

で文字列を分割することができます

>>> [x.replace("###", "\n_") for x in a.replace("\n_", "###").split()] 
['red', 'yellow', 'green\n_surprise!', 'blue'] 

または:

>>> [x.replace("###", "\n_") for x in a.replace("\n_", "###").splitlines()] 
['red', 'yellow', 'green\n_surprise!', 'blue'] 
+0

この回答はうまくいくが、@Haifeng Zhangの答えほど簡潔ではない。また、たとえば、ユーザからの入力があった場合、誰かがコードを壊そうとしている場合は、「###」と入力することで可能です。しかし、答えをありがとう! – nedla2004

関連する問題