[英]python split string on whitespace following specific character
我關於Stackoverflow的第一個問題,因為我無法找到答案。
我正在嘗試找出如何在Python中分割字符串,該字符串具有以下類型的格式:
'aaaa bbbb cccc:dd eeee:ff ggg hhhh iiii:jjjj kkkk:llll:mm nnn:ooo pppp qqqq:rrr'
進入以下列表項:
'aaaa bbbb cccc:dd'
'eeee:ff'
'ggg hhhh iiii:jjjj'
'kkkk:llll:mm'
'nnn:ooo'
'pppp qqqq:rrr'
基本上,我需要在檢測到冒號(':')后在第一個空白處進行分割
我正在考慮如果檢測到冒號,則將字符串循環並在下一個空白處分割,但我懷疑可能會使用更有效的正則表達式。
我們歡迎所有的建議 :)
import re
a = 'aaaa bbbb cccc:dd eeee:ff ggg hhhh iiii:jjjj kkkk:llll:mm nnn:ooo pppp qqqq:rrr'
print(re.findall(r'([^:]*:[^ ]*) *', a))
不幸的是,您不能使用可變寬度后向搜索,因此正則表達式解決方案要難一些。
使用生成器函數更容易:
def after_colon_split(string):
start = 0
iter = enumerate(string)
for i, ch in iter:
if ch == ':':
for i, ch in iter:
if ch == ' ':
yield string[start:i]
start = i + 1
break
remainder = string[start:]
if remainder:
yield remainder
演示:
>>> inputstring = 'aaaa bbbb cccc:dd eeee:ff ggg hhhh iiii:jjjj kkkk:llll:mm nnn:ooo pppp qqqq:rrr'
>>> list(after_colon_split(inputstring))
['aaaa bbbb cccc:dd', 'eeee:ff', 'ggg hhhh iiii:jjjj', 'kkkk:llll:mm', 'nnn:ooo', 'pppp qqqq:rrr']
這樣呢:
#!/usr/bin/python
ls = list()
fin = list()
string = 'aaaa bbbb cccc:dd eeee:ff ggg hhhh iiii:jjjj kkkk:llll:mm nnn:ooo pppp qqqq:rrr'
for w in string.split():
if ':' in w:
ls.append(w)
fin.append(' '.join(ls))
ls = []
else:
ls.append(w)
for f in fin:
print f
輸出:
aaaa bbbb cccc:dd
eeee:ff
ggg hhhh iiii:jjjj
kkkk:llll:mm
nnn:ooo
pppp qqqq:rrr
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.