【问题标题】:compare two csv files, one line code fails比较两个csv文件,一行代码失败
【发布时间】:2016-08-10 10:51:01
【问题描述】:

我有下面的代码(也包括完整的代码)它负责比较 2 个 csv 文件

(如果可能,我坚持将其保留为单行格式):

master_indices = dict(((r[0]), i) for i, r in enumerate(csv.reader(master)))

我需要添加语句,如果该行包含'/'而不是枚举并制作 dic

我试过了:

master_indices = dict(((r[0]), i) for i, r in enumerate(csv.reader(master)) if r.startswith('/') )

master_indices = dict(((r[0]), i) for i, r in enumerate(csv.reader(master)) if re.search(r'/', str(r)))

my lines looks like

1/2/3 12:02:03, aaa, 4bb5b, dddd, eeee
2 ----------> dont want this
3/4/8 1:01:54, aaa, rrrr, dddddd, fdghd
3/4/8 1:01:54  aah, 12rr, ddghddd, fdghd
3/4/8 1:01:54  agy, rr34r, ddhgdd, fdghd
47,    23,    54 ---> dont want this

完整代码: 导入csv

with open('C:\\Users\\Fradad\\Desktop\\work\\New folder (2)\\NPPD-conversion\\HIS_exp_20140101\\LTA\\LTA37\\Analog_per_5_min_20140101.csv', 'r') as master:
    master_indices = dict(((r[0]), i) for i, r in enumerate(csv.reader(master)) if re.search(r'/', str(r)))


with open('C:\\Users\\Fradad\\Desktop\\work\\New folder (2)\\NPPD-conversion\\HIS_exp_20140101\\LTA\\LTA37\\Analog_exp_2014010100.csv', 'r') as hosts:
    with open('results1.csv', 'w') as results:
        reader = csv.reader(hosts)
        writer = csv.writer(results)

        writer.writerow(next(reader, []) + ['RESULTS'])

        for row in reader:
            index = master_indices.get(row[0])
            if index is not None:
                message = 'FOUND in master list (row {})'.format(index)
            else:
                message = 'NOT FOUND in master list'
            writer.writerow(row + [message])

【问题讨论】:

  • 您能分享一下您遇到的错误吗?

标签: python python-3.x csv parsing


【解决方案1】:

你试过了吗?

master_indices = {r[0]:i for i,r in enumerate(csv.reader(master)) if "/" in r[0]}

如果你想在所有行中找到“/”,你可以这样做:

 master_indices = {r.split(",",1)[0]:i for i,r in enumerate(master) if "/" in r}

【讨论】:

  • 你能给我最后的帮助吗,现在我需要将该字典设为嵌套字典,例如:m_l = { r[0]: {r[0] + r[1]: i}, {r[1] + r[2] + r[3]: r[6]} for i,r in enumerate(csv.reader(master)) if "/" in r[0]}
  • 试试这个:m_l = {r[0]: {r[0] + r[1]: i, r[1] + r[2] + r[3]: r[6]} for i,r in enumerate(csv.reader(master)) if "/" in r[0]}
猜你喜欢
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 2012-09-05
  • 2011-07-09
  • 2014-06-14
  • 2021-04-27
  • 1970-01-01
相关资源
最近更新 更多