我想分割下面提到的字符串:如何忽略報價,而拆分字符串蟒蛇
lin=' <abc<hd <> "abc\"d\" ef" '
到
[<abc<hd <>, "abc\"d\" ef"]
但我的問題是,當我使用分裂的re.findall(r'"(.*?)"', lin, 0)
字符串。我得到
['abc', 'ef']
有人可以請指導我如何在Python中分割字符串?
我想分割下面提到的字符串:如何忽略報價,而拆分字符串蟒蛇
lin=' <abc<hd <> "abc\"d\" ef" '
到
[<abc<hd <>, "abc\"d\" ef"]
但我的問題是,當我使用分裂的re.findall(r'"(.*?)"', lin, 0)
字符串。我得到
['abc', 'ef']
有人可以請指導我如何在Python中分割字符串?
這是一個使用正則表達式的解決方案。
import re
line = ' <abc<hd <> "abc\"d\" ef" '
match = list(re.findall(r'(<[^>]+>)\s+("(?:\"|[^"])+")', line)[0])
print(match)
#['<abc<hd <>', '"abc"d" ef"']
另一種方法。
print(re.split(r'\s+(?=")', line.strip())) #split on white space only if followed by a quote.
#['<abc<hd <>', '"abc"d" ef"']
>>> lin=' <abc<hd <> "abc\"d\" ef" '
>>> lin.split('"', 1)
[' <abc<hd <> ', 'abc"d" ef" ']
首先,你必須在開始和你的字符串的結尾一些額外的空格,這樣做lin .strip()
將刪除。
然後可以使用str.split()
在第一"
分裂:
>>> lin.strip().split(' "', 1)
['<abc<hd <>', 'abc"d" ef"']
我們作爲第二個參數使用1
告訴蟒蛇只有一次拆分它,所以不是每隔"
分裂。
另一個正則表達式的解決方案
import re
lin=' <abc<hd <> "abc\"d\" ef" '
matching = re.match("\s+(.*?)\s+(\"(.*)\")", lin)
print [matching.group(1), matching.group(2)]
輸出
['<abc<hd <>', '"abc"d" ef"']
什麼呢分裂表明 –
內參數1閱讀Python文檔 –
這不是OP想要的東西。檢查你的答案提供的額外空白 – TerryA