使用python或unix比较文件的两列

时间:2017-05-25 10:26:26

标签: python shell

我有像csv这样的文件中的数据,或者带有特定分隔符的txt文件。例如:

date|Symbol
2017-05-01|A
2017-05-01|B
2017-05-01|C
2017-05-01|A
2017-05-02|A
2017-05-02|B
2017-05-02|C
2017-05-03|A
2017-05-04|A
2017-05-04|B
2017-05-04|C
2017-05-05|A
2017-05-05|A
2017-05-05|B
2017-05-06|C
2017-05-06|A
2017-05-07|A
2017-05-05|B
2017-05-07|C
2017-05-08|A

现在我想检查某个符号是否在某一天重复出现,如果是,那么带有日期的符号。就像符号A在5月1日重复,B在5月5日。

我正在尝试使用python,将所有符号放入列表中,然后在第一列检查,如果有任何日期重复。<​​/ p>

还有其他解决方案吗?

3 个答案:

答案 0 :(得分:0)

逐行读取然后按管道分割|:

ln.split("|")[1]

这将显示像A B ......

这样的字符

与其他人比较

答案 1 :(得分:0)

使用python difflib https://pymotw.com/2/difflib/

import difflib
from difflib_data import *

d = difflib.Differ()
diff = d.compare(text1_lines, text2_lines)
print '\n'.join(diff)

答案 2 :(得分:0)

我创建了一个词典列表,每个词典都有键作为数据,列2列表作为值。现在我检查了每一本字典是否有任何重复。

如果任何人有更好的解决方案,那么非常欢迎。

更新上述实施代码:

with open(file_path,"rb") as f:
    reader = csv.reader(f,delimiter=delmtr)
    for line in reader:
        if is_header == 1:
            is_header = 0
            continue
        date_dict = {}
        inst_fl_col = inst_col - 1
        date_fl_col = date_col - 1
        if line[date_fl_col] not in date_list:
            date_list.append(line[date_fl_col])
            instrument_list = []
            instrument_list.append(line[inst_fl_col])
            date_dict[line[date_fl_col]] = instrument_list
            p_list.append(date_dict)
            csvwriter.writerow(line)
            del date_dict,instrument_list
        else:
            for dicts in p_list:
                for k,v in dicts.items():
                    if k == line[date_fl_col]:
                        if line[inst_fl_col] not in v:
                            v.append(line[inst_fl_col])
                            csvwriter.writerow(line)
                        else:
                            count += 1
nw_fl.close()
print str(count)+" rows ignored in newly created "+new_file_name+" file"
del date_list[:],is_header,csvwriter,count

我是通过使用python的基本知识来实现​​的,现在我正在使用collections模块和defaultdict类来改进它。如果有人要求改进代码,请告诉我。

非常欢迎建议。