Python按1和3个空格分割字符串

时间:2017-04-12 12:08:35

标签: python string python-2.7 list

我想知道在python中是否可以同时将一个字符串拆分为1和3个空格。例如,我有string: Hi There并假设此字符串是用莫尔斯电码编写的。每个单词用3个空格分隔,每个单词用1个空格分隔 .... .. - .... . .-. .

这在python中是可能的吗?如果是的话,我该怎么做?

4 个答案:

答案 0 :(得分:3)

分开两次;一次在3个空格中,然后在列表理解中单个空格上的每个单词:

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

这也为你提供了很好的嵌套列表;毕竟,你不想失去单词之间的界限。

演示:

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

如果您坚持使用一个长列表,只需使用word.split()调用分割任意宽度空格:

sentence.split()

这会产生一个单独的莫尔斯字母列表,所有这些字母混杂在一起:

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

答案 1 :(得分: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]: ['....', '..', '-', '....', '.', '.-.', '.']

......当然,你自己也失去了界限。

答案 2 :(得分:1)

此外,您可以使用map

进行拆分
sentence = '.... ..   - .... . .-. .'
splitted_sentence = map(lambda x: x.split(), sentence.split('   '))
splitted_sentence
Out[21]: [['....', '..'], ['-', '....', '.', '.-.', '.']] 

sentence.split(' ')会将sentence分成list个单词,map会将split分配到每个单词。

答案 3 :(得分:0)

您可以决定不关心两个/三个空格,然后先用一个空格分割。输出列表太长,但空格所在的条目现在都是空的。这些都可以一次性过滤掉。

在Python 3.x中:

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

(显然,如果您知道空间组合的位置,您也可以构建正则表达式)