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