我有一个多列的CSV文件。其中一列具有不同数据类型、字母和浮点数的字符串。这些是ProductName和Price。咖啡- 2.50,茶- 3.00,...etc,然而,我不知道如何将价格(浮动)从字符串(我认为把它放入字典格式是最好的?使{Product: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']]提前谢谢
发布于 2022-01-27 14:20:56
在这里使用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'}发布于 2022-01-27 14:19:08
从我的名单中你可以这样做:
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}这假设所有条目之间都有'-‘,并且总是有三个条目。希望能成功!)
发布于 2022-01-27 14:22:10
如果字符串在格式上是相似的,那么您可以简单地拾取这些符号。如果更困难,请使用正则表达式。
例如:
字串价格
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‘libary)。
https://stackoverflow.com/questions/70879949
复制相似问题