簡體   English   中英

python在空白后面的特定字符上拆分字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM