2017-04-12 4 views
-2

Imは、文字列を1と3のスペースで同時に分割することが可能かどうか疑問に思っています。たとえば、私はstring:Hi Thereを持っていて、この文字列がモールス符号で書かれていると仮定します。各単語は3つのスペースで区切られ、それぞれの文字は1つのスペースで区切られています。
.... .. - .... . .-. .Python 1と3のスペースで文字列を分割する

これはpythonで可能ですか?もしそうなら、どうしたらいいですか?

+0

この結果、あなたは何を受け取りますか?リストのリスト? – languitar

+0

なぜ最初に3つのスペース(単語)で分割し、各単語に1つのスペースで分割を適用したくないのですか? – kvorobiev

+1

@ ShuzZzle:彼らは明らかにモールスコードを出力としてではなく**入力**として扱っています。 –

答えて

3

2回だけ分割する。一度に3つのスペースを入力すると、リスト内の単一スペースの各単語:

[word.split(' ') for word in sentence.split(' ')] 

これはネストされたリストも優れています。あなたは言葉の間の描写を失うことを望んでいないでしょう。

デモ:

>>> sentence = '.... .. - .... . .-. .' 
>>> [word.split(' ') for word in sentence.split(' ')] 
[['....', '..'], ['-', '....', '.', '.-.', '.']] 

あなただけ任意の幅に空白を分割するword.split()コールを使用し、一の長いリストを主張した場合:

sentence.split() 

これは個々のリストを生成モールスの手紙は、一緒に混乱した:

>>> sentence.split() 
['....', '..', '-', '....', '.', '.-.', '.'] 
+0

助けてくれてありがとう –

1
In [18]: [l for w in s.split('\t') for l in w.split()] 
Out[18]: ['....', '..', '-', '....', '.', '.-.', '.'] 

...しかし、あなたは単語の境界を失う:、

In [17]: s = '.... .. - .... . .-. .' 
In [18]: s.split() 
Out[18]: ['....', '..', '-', '....', '.', '.-.', '.'] 

やワード境界は、そのようなタブ(\t)など、いくつかの他の文字で表示されているかどうかを尋ねられたとして、あなたの質問に答えるためにもちろん、自分自身。

+0

それでは 's.split()'を使ってやりましょう。 –

0

2つまたは3つのスペースを気にせず、最初に1つのスペースで分割することができます。出力リストは長すぎますが、スペースがあったエントリはすべて空になりました。これらはすべて一度にフィルタリングすることができます。 Pythonの3.xでは

list(filter(None,'.... .. - .... . .-. .'.split(' '))) 

(スペースの組み合わせが可能になる場所がわかっている場合明らかに、あなたはまた、正規表現を構築することができ)

1

また、あなたはmap

で分割を行うことができます
sentence = '.... .. - .... . .-. .' 
splitted_sentence = map(lambda x: x.split(), sentence.split(' ')) 
splitted_sentence 
Out[21]: [['....', '..'], ['-', '....', '.', '.-.', '.']] 

sentence.split(' ')言葉のlistsentenceを分割し、map意志各単語にsplitを適用します。

関連する問題