首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分开CSV字符串的字母和浮动

分开CSV字符串的字母和浮动
EN

Stack Overflow用户
提问于 2022-01-27 14:06:52
回答 3查看 33关注 0票数 0

我有一个多列的CSV文件。其中一列具有不同数据类型、字母和浮点数的字符串。这些是ProductName和Price。咖啡- 2.50,茶- 3.00,...etc,然而,我不知道如何将价格(浮动)从字符串(我认为把它放入字典格式是最好的?使{Product:Price(浮点)}

专栏示例:“大口味冰拿铁-焦糖- 3.25,普通冰拿铁-榛子- 2.75,普通口味冰拿铁-焦糖- 2.75,大口味冰拿铁-榛子- 3.25,普通口味拿铁-榛子- 2.55,普通口味的冰拿铁-榛子- 2.75”

我试过:

代码语言:javascript
复制
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']]提前谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-01-27 14:20:56

在这里使用re.findall是一种方法:

代码语言:javascript
复制
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)

这些指纹:

代码语言:javascript
复制
{'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'}
票数 0
EN

Stack Overflow用户

发布于 2022-01-27 14:19:08

从我的名单中你可以这样做:

代码语言:javascript
复制
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}

这假设所有条目之间都有'-‘,并且总是有三个条目。希望能成功!)

票数 0
EN

Stack Overflow用户

发布于 2022-01-27 14:22:10

如果字符串在格式上是相似的,那么您可以简单地拾取这些符号。如果更困难,请使用正则表达式。

例如:

字串价格

代码语言:javascript
复制
s = ' Regular Flavoured latte - Hazelnut - 2.55'

您可以将此字符串拆分为

代码语言:javascript
复制
s.split('-')

并获取

‘普通味拿铁',’榛子',‘2.55'

代码语言:javascript
复制
 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)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70879949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档