2016-11-18 7 views
0

私はここを見てきましたが、私の問題に近いものは何も見つかりませんでした。私はpython3を使用しています。 すべての空白とコンマで文字列を分割したいと思います。ここで私は今得たものであるが、私が何か奇妙な出力が得られます。 (そのドイツから翻訳文を心配いけない)スペースやカンマで分割する方法は?

import re 
    sentence = "We eat, Granny" 
    split = re.split(r'(\s|\,)', sentence.strip()) 
    print (split) 

    >>>['We', ' ', 'eat', ',', '', ' ', 'Granny'] 

私が実際に持っていたいのです:

>>>['We', ' ', 'eat', ',', ' ', 'Granny'] 
+2

のように、必要なすべての内容と一致しますが、それが参照してください –

+0

エスケープする必要はありませんでしょうこれらの空の文字列については、split()の結果で返される文字列?](http://stackoverflow.com/q/2197451/2564301)を参照してください。 – usr2564301

+0

確かにカンマは重要です(ドイツ語で)そうでなければあなたはおばあちゃんを食べます:)、おかげでRad Lexus、私は見ます –

答えて

1

代替方法:

split = [a for a in re.split(r'(\s|\,)', sentence.strip()) if a] 
+1

あなたの提案は次のようになります:['We'、 'eat'、 '' Granny '] –

+0

は答えを編集しました – Vaulstein

0

これはあなたのために働く必要があります。

import re 
sentence = "We eat, Granny" 
split = list(filter(None, re.split(r'(\s|\,)', sentence.strip()))) 
print (split) 
+0

それはどういうわけか:

+0

ええ、私は2.7でテストしています。編集を行いました。 – zipa

1

私はなぜ空になっている[代わりに、分割のfindAllのために行くと、ちょうどカンマがここに:)非常に重要になります

import re 
sentence = "We eat, Granny" 
print(re.findall(r'\s|,|[^,\s]+', sentence)) 
+0

はい、完璧に動作します!私の試行の違いは何ですか?ありがとう! –

+0

主な違いは、 'split'の代わりに' findall'を使う点です。 –

関連する問題