我正在尋找一種在兩個不同符號之間拆分字串的pythonic方法
我想提取'='之后的字符直到第一個''。
我擁有的:
s = "up=Foo left=Bar down=Baz"
我想要的是:
s = ['Foo','Bar','Baz']
關于如何在不使用 re 的情況下執行此操作的任何想法?
uj5u.com熱心網友回復:
一種pythonic(沒有錯誤處理)的方法就是這樣
s = "up=Foo left=Bar down=Baz"
t = [val.split('=')[1] for val in s.split(' ')]
print(t)
輸出:
['Foo', 'Bar', 'Baz']
在這里試試
您還可以使用 val.split[0] 和 [1] 創建字典。這將更加pythonic!
uj5u.com熱心網友回復:
s = "up=Foo left=Bar down=Baz"
s = s.split(" ")
output = []
for s2 in s:
output.append(s2.split("=")[1])
print(output)
結果:
['Foo', 'Bar', 'Baz']
[Finished in 84ms]
正則運算式是我會使用的,但如果你不想,那么你可以:
按空間分割以生成方程串列。
然后,您可以遍歷方程式串列并按等號拆分,將結果添加到空串列(此處稱為“輸出”)。
我的回答不那么 Pythonic,但可能更容易理解。
uj5u.com熱心網友回復:
雖然我質疑使用 Regex 實作此目的的可能性。但使用純 Python 有一種更簡單的方法:
s = "up=Foo left=Bar down=Baz"
value_list = []
for index in s.split(" "):
splitted = index.split("=")
value = splitted[1] if len(splitted) > 0 else "Fallback Value"
value_list.append(value)
print(value_list)
即使某些專案沒有價值,也會回傳Fallback值。
uj5u.com熱心網友回復:
代碼:
import re
s = "up=Foo left=Bar down=Baz"
regex = re.compile(r'=(?P<value>\w )[ ]?')
results = [match.group('value') for match in regex.finditer(s)]
print(results)
輸出:
['Foo', 'Bar', 'Baz']
uj5u.com熱心網友回復:
您提到您不想使用正則運算式,但它確實非常適合您的問題:
s = "up=Foo left=Bar down=Baz"
vals = re.findall(r'\w =(\w )', s)
print(vals) # ['Foo', 'Bar', 'Baz']
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/453375.html
