2017-04-12 92 views
-2

我想知道是否可能在python中同時將字符串拆分爲1和3個空格。例如,我有一個string:Hi There並假定這個字符串是用莫爾斯碼寫的。每個單詞由3個空格隔開,每個字母由1個空格分隔。
.... .. - .... . .-. .Python拆分字符串的1和3個空格

這是可能的蟒蛇?如果是這樣,我該怎麼做?

+0

作爲此結果,您希望收到什麼?列表清單? – languitar

+0

爲什麼您不想先分開3個空格(單詞),然後將每個單詞分割1個空格? – kvorobiev

+1

@ShuzZzle:他們顯然正在使用莫爾斯密碼作爲**輸入**,而不是輸出。 –

回答

3

只需拆分兩次;一次在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 [17]: s = '.... .. - .... . .-. .' 
In [18]: s.split() 
Out[18]: ['....', '..', '-', '....', '.', '.-.', '.'] 

或者,如果字邊界是由一些其它字符表示,如標籤(\t):

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

...但你失去了字邊界當然,他們自己。

+0

然後你可以使用's.split()'並完成它。 –

0

您可以決定不關心這兩個/三個空間,並首先分割一個空格。輸出列表將過長,但空間所在的條目現在全部爲空。這些你可以一次過濾掉。

在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(' ')將分裂sentence成單詞的list,和map意願將split應用於每個單詞。