将文件格式化为包含价格、产品名称和数量的列表

2024-05-21 00:11:56 发布

您现在位置:Python中文网/ 问答频道 /正文

需要最简单最简单的方法来做以下工作

我有一个这样的文件包含产品名称和价格。你知道吗

blackberry 23 100 
Black shirt with hoody (small) 4 800
Pastel Paint (red) (oil) 2 600

我怎样才能把它们格式化成这样的列表呢

 lst=[['blackberry' ,23 ,100],['Black shirt with hoody (small)' ,4 ,800],['Pastel Paint (red) (oil)' ,2 ,600]]

当产品名称只包含一个单词时,我尝试使用split,例如Blackberry,但是如果更多的单词包含它,它就不再工作了,因为我正在使用空格进行拆分。你知道吗


Tags: 文件方法with价格red单词smallblack
3条回答

您已经准确地描述了逻辑问题:您需要在一个短语中收集所有单词,而不是在空格上拆分。注意输入行的共同特征:单词后面有两个整数。一种方法是拆分,然后重新组合除最后两个元素以外的所有元素。另一种方法是使用rsplit方法,限制拆分2个字段。第二种可能更好。你知道吗

您也可以使用正则表达式(regex)来处理这个问题,但这需要学习其他工具,可能比您现在想要的更多。你知道吗

使用str.rsplit,它开始在字符串的右侧部分拆分第二个参数中提供的项目(第一个是拆分项目),如下所示:

l = [
"blackberry 23 100",
"lack shirt with hoody (small) 4 800",
"Pastel Paint (red) (oil) 2 600"
]

outlist = [x.rsplit(" ", 2) for x in l]
print(outlist)

这里有一个live example

with open('demo.txt') as f:  # demo.txt is your file
    lines = f.readlines()

datas = [line.strip().rsplit(' ', 2) for line in lines]
print(datas)

输出

[['blackberry', '23', '100'], ['Black shirt with hoody (small)', '4', '800'], ['Pastel Paint (red) (oil)', '2', '600']]

相关问题 更多 >