我正在创建一些替代空格的代码。 我想要一个双重空间变成一个空间和一个空间变成一无所有。
示例:
video
输出是" testest"因为它取代了所有的空间。 如何进行输出"测试测试"?
由于
答案 0 :(得分:1)
正则表达式方法无疑是可能的,但是对于快速解决方案,首先在双空格上拆分,然后在使用理解去除拆分中每个元素中的单个空格后重新加入单个空格:
>>> string = "t e s t t e s t"
>>> ' '.join(word.replace(' ', '') for word in string.split(' '))
'test test'
答案 1 :(得分:1)
另一个想法:
>>> s = 't e s t t e s t'
>>> s.replace(' ', ' ').replace(' ', '').replace(' ', '')
'test test'
似乎更快:
>>> timeit(lambda: s.replace(' ', ' ').replace(' ', '').replace(' ', ''))
2.7822862677683133
>>> timeit(lambda: ' '.join(w.replace(' ','') for w in s.split(' ')))
7.702567737466012
正则表达式(至少这一个)更短但速度更慢:
>>> timeit(lambda: re.sub(' ( ?)', r'\1', s))
37.2261058654488
答案 2 :(得分:0)
我喜欢这个正则表达式解决方案,因为您可以轻松阅读正在发生的事情:
>>> import re
>>> string = "t e s t t e s t"
>>> re.sub(' {1,2}', lambda m: '' if m.group() == ' ' else ' ', string)
'test test'
我们搜索一个或两个空格,用空字符串替换一个空格,但用一个空格替换两个空格。