我想知道是否可能在python中同時將字符串拆分爲1和3個空格。例如,我有一個string:
Hi There
並假定這個字符串是用莫爾斯碼寫的。每個單詞由3個空格隔開,每個字母由1個空格分隔。
.... .. - .... . .-. .
Python拆分字符串的1和3個空格
這是可能的蟒蛇?如果是這樣,我該怎麼做?
我想知道是否可能在python中同時將字符串拆分爲1和3個空格。例如,我有一個string:
Hi There
並假定這個字符串是用莫爾斯碼寫的。每個單詞由3個空格隔開,每個字母由1個空格分隔。
.... .. - .... . .-. .
Python拆分字符串的1和3個空格
這是可能的蟒蛇?如果是這樣,我該怎麼做?
只需拆分兩次;一次在3個空格,然後在列表中理解的單一空間的每個字:
[word.split(' ') for word in sentence.split(' ')]
這給了你很好的嵌套列表太;畢竟,你不想失去單詞之間的劃分。
演示:
>>> sentence = '.... .. - .... . .-. .'
>>> [word.split(' ') for word in sentence.split(' ')]
[['....', '..'], ['-', '....', '.', '.-.', '.']]
如果你堅持一個長長的清單上,只使用一個word.split()
調用上任意寬度分割空白:
sentence.split()
由此產生的個人名單莫爾斯字母,全都混雜在一起:
>>> sentence.split()
['....', '..', '-', '....', '.', '.-.', '.']
謝謝你的幫助 –
要回答你的問題問的,
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]: ['....', '..', '-', '....', '.', '.-.', '.']
...但你失去了字邊界當然,他們自己。
然後你可以使用's.split()'並完成它。 –
您可以決定不關心這兩個/三個空間,並首先分割一個空格。輸出列表將過長,但空間所在的條目現在全部爲空。這些你可以一次過濾掉。
在Python 3.X:
list(filter(None,'.... .. - .... . .-. .'.split(' ')))
(顯然,如果你知道在哪裏的空間組合,將是你也可以構造一個正則表達式)
另外,你可以做劈開map
sentence = '.... .. - .... . .-. .'
splitted_sentence = map(lambda x: x.split(), sentence.split(' '))
splitted_sentence
Out[21]: [['....', '..'], ['-', '....', '.', '.-.', '.']]
sentence.split(' ')
將分裂sentence
成單詞的list
,和map
意願將split
應用於每個單詞。
作爲此結果,您希望收到什麼?列表清單? – languitar
爲什麼您不想先分開3個空格(單詞),然後將每個單詞分割1個空格? – kvorobiev
@ShuzZzle:他們顯然正在使用莫爾斯密碼作爲**輸入**,而不是輸出。 –