2024-04-24 12:32:46 发布
网友
我想用一个公司名称来加总金额,但公司名称的格式通常是不同的。。比如苹果公司有时是苹果电脑,苹果公司。 也。。我不知道该怎么处理“头”
我的文件格式是CSV。在
company amount a 20 b 10 A' 30 bb 20
我想这样做:
您的数据不是真正的CSV格式。表观列之间没有逗号,也没有制表符,甚至没有一个空格。有时有多个空格。。。如果这是一个以空格分隔的值文件,则每个空格将指示一个新列。多个空格意味着每行有两个以上的列。在
这个细节很重要,因为CSV文件很容易被csv module解析。我们不能使用CSV文件,因为这个不是真的。在
假设总是只有两列用空格隔开,最后一列表示数值(第一行除外):
total=0 with open('data.csv','r') as f: next(f) # skip the first (header) line for line in f: company,amount=line.rsplit(' ',1) amount=float(amount) if 'Apple' in company: total+=amount print(total)
你需要以某种方式映射出名字的变化,要么单独合计每个名字,然后手工组合,要么事先制作一个字典,识别每个公司使用的所有别名。if 'Apple' in line:很难失败,因为它无法察觉地将不同公司的资金混合在一起。在
if 'Apple' in line:
Company = {"Apple": 1, "Apple Computer": 1, "AAPL": 1, "Apple, Inc": 1, "Apple Vacations": 2, "Applebee's Restaurant": 3 } sum[Company[name]] += amount
编辑2:如果您事先不知道所有的公司名称,那么您所能做的就是跟踪输入文件中包含的唯一名称,并决定以后是否合并它们:
您的数据不是真正的CSV格式。表观列之间没有逗号,也没有制表符,甚至没有一个空格。有时有多个空格。。。如果这是一个以空格分隔的值文件,则每个空格将指示一个新列。多个空格意味着每行有两个以上的列。在
这个细节很重要,因为CSV文件很容易被csv module解析。我们不能使用CSV文件,因为这个不是真的。在
假设总是只有两列用空格隔开,最后一列表示数值(第一行除外):
你需要以某种方式映射出名字的变化,要么单独合计每个名字,然后手工组合,要么事先制作一个字典,识别每个公司使用的所有别名。
if 'Apple' in line:
很难失败,因为它无法察觉地将不同公司的资金混合在一起。在编辑2:如果您事先不知道所有的公司名称,那么您所能做的就是跟踪输入文件中包含的唯一名称,并决定以后是否合并它们:
^{pr2}$相关问题 更多 >
编程相关推荐