我有一個多列的 CSV 檔案。其中一列具有不同資料型別、字母和浮點數的字串。這些是 ProductName 和 Price 例如。咖啡 - 2.50,茶 - 3.00,...等但是,我無法弄清楚如何將價格(浮點數)與字串分開(我相信將其放入字典格式是最好的?制作 {Product(str):Price(漂浮)}
列示例:“大味冰拿鐵 - 焦糖 - 3.25,普通口味冰拿鐵 - 榛子 - 2.75,普通口味冰拿鐵 - 焦糖 - 2.75,大味冰拿鐵 - 榛子 - 3.25,普通口味拿鐵 - 榛子 - 2.55,普通口味冰拿鐵 - 榛子 - 2.75"
我試過:
my_list=[i.split(',') for i in my_list]
print(my_list)
但在此之后我有一個串列,不知道如何進一步處理元素
[['Large Flavoured iced latte - Caramel - 3.25', ' Regular Flavoured iced latte - Hazelnut - 2.75', ' Regular Flavoured iced latte - Caramel - 2.75', ' Large Flavoured iced latte - Hazelnut - 3.25', ' Regular Flavoured latte - Hazelnut - 2.55', ' Regular Flavoured iced latte - Hazelnut - 2.75']]
先感謝您
uj5u.com熱心網友回復:
使用re.findall這里是一種方法:
inp = "Large Flavoured iced latte - Caramel - 3.25, Regular Flavoured iced latte - Hazelnut - 2.75, Regular Flavoured iced latte - Caramel - 2.75, Large Flavoured iced latte - Hazelnut - 3.25, Regular Flavoured latte - Hazelnut - 2.55, Regular Flavoured iced latte - Hazelnut - 2.75"
d = dict(re.findall(r'(.*?)\s*-\s*(\d (?:\.\d )?),?\s*', inp))
print(d)
這列印:
{'Large Flavoured iced latte - Caramel': '3.25',
'Regular Flavoured iced latte - Hazelnut': '2.75',
'Regular Flavoured latte - Hazelnut': '2.55',
'Regular Flavoured iced latte - Caramel': '2.75',
'Large Flavoured iced latte - Hazelnut': '3.25'}
uj5u.com熱心網友回復:
從 mylist 開始,您可以這樣做:
mylist = [['Large Flavoured iced latte - Caramel - 3.25', '
Regular Flavoured iced latte - Hazelnut - 2.75', ' Regular
Flavoured iced latte - Caramel - 2.75', ' Large Flavoured iced
latte - Hazelnut - 3.25', ' Regular Flavoured latte - Hazelnut -
2.55', ' Regular Flavoured iced latte - Hazelnut - 2.75']]
items = [thing.split('-') for thing in mylist[0]]
items = [(thing[0] thing [1], float(thing[2])) for thing in
items]
mydict = {key:value for (key,value) in items}
這假定所有條目之間有“-”并且總是三個條目。希望它可以作業!:)
uj5u.com熱心網友回復:
如果字串的格式相似,那么您可以簡單地選擇符號。如果更困難,請使用正則運算式。
例如:
字串-單詞-價格
s = ' Regular Flavoured latte - Hazelnut - 2.55'
您可以將此字串拆分為
s.split('-')
并得到
['普通風味拿鐵','榛子','2.55']
mylist2 = [x.split('-') for x in mylist]
mydict = {'-'.join(x[:2]):float(x[2]) for x in mylist2}
{'大味冰拿鐵 - 焦糖':3.25,'普通口味冰拿鐵 - 榛子':2.75,'普通口味冰拿鐵 - 焦糖':2.75,'大味冰拿鐵 - 榛子':3.25,'普通口味拿鐵 -榛子':2.55}
您還可以使用常規例外('re' 庫)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/421910.html
標籤:
