簡體   English   中英

基於正則表達式拆分字符串

[英]Split string based on a regular expression

我以表格形式輸出命令。 我正在從結果文件中解析此輸出並將其存儲在字符串中。 一行中的每個元素由一個或多個空格字符分隔,因此我使用正則表達式匹配1個或多個空格並將其拆分。 但是,在每個元素之間插入一個空格:

>>> str1="a    b     c      d" # spaces are irregular
>>> str1
'a    b     c      d'
>>> str2=re.split("( )+", str1)
>>> str2
['a', ' ', 'b', ' ', 'c', ' ', 'd'] # 1 space element between!!!

有一個更好的方法嗎?

每次拆分后, str2都會附加到列表中。

通過使用() ,您正在捕獲該組,如果您只是刪除它們,您將不會遇到此問題。

>>> str1 = "a    b     c      d"
>>> re.split(" +", str1)
['a', 'b', 'c', 'd']

但是沒有必要使用正則表達式, str.split沒有指定任何分隔符將為您分割這個空格。 在這種情況下,這將是最好的方法。

>>> str1.split()
['a', 'b', 'c', 'd']

如果你真的想要正則表達式,你可以使用它( '\\s'表示空格,它更清晰):

>>> re.split("\s+", str1)
['a', 'b', 'c', 'd']

或者你可以找到所有非空白字符

>>> re.findall(r'\S+',str1)
['a', 'b', 'c', 'd']

str.split方法將自動刪除項之間的所有空格:

>>> str1 = "a    b     c      d"
>>> str1.split()
['a', 'b', 'c', 'd']

文檔在這里: http//docs.python.org/library/stdtypes.html#str.split

使用re.split並且拆分模式包含捕獲組時,這些組將保留在輸出中。 如果您不想這樣,請改用非捕獲組。

其實非常簡單。 試試這個:

str1="a    b     c      d"
splitStr1 = str1.split()
print splitStr1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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