纠正python中列表中的某些常见值

时间:2018-01-28 16:36:47

标签: python excel csv

这是一个示例csv文件:

out_gate,in_gate,n_con
/a_a,b,1
/a_a,b,3
/a_b,a,2
/a_b,c,4
/a_c,a,5
/a_c,b,5
/b_c,a,4
/b_d,c,2

从这个文件的第一列的out_gate值,我想过滤掉那些以' / a _'开头的内容。然后删除他们的' / a _'前缀,以便我将留下一个新的csvfile :(假设实际上有超过30行)

out_gate,in_gate,n_con
a,b,1
a,b,3
b,a,2
b,c,4
c,a,5
c,b,5

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以使用此代码从csv文件中创建字典:

import csv 

def from_csv_to_dict():

   reader = csv.DictReader(open(CSV_FILE_NAME)) #the file
   result = {} # will be the dict to retrun

   for row in reader:
       key = row.pop("the id column") # "out_gate" in your case
       result[key] = row

   return result

运行它并查看结果字典,在将文件加载到字典后,用csv文件做你想做的事情要容易得多。

编辑:

这是此函数将在您的文件中返回的结果字典:

{'/b_c': {'in_gate': 'a', 'n_con': '4'}, '/a_a': {'in_gate': 'b', 'n_con': '3'}, '/b_d': {'in_gate': 'c', 'n_con': '2'}, '/a_c': {'in_gate': 'b', 'n_con': '5'}, '/a_b': {'in_gate': 'c', 'n_con': '4'}}

答案 1 :(得分:0)

这是一种简单的方法:

from csv import reader, writer

lines = []

csv_reader = reader(open(INPUT_CSV_FILE, 'r'))
for i, line in enumerate(csv_reader):
    if i == 0:
        lines.append(line)
        continue  
    if not line[0].startswith('/a_'):
        continue
    lines.append([line[0][3:], line[1], line[2]])

csv_writer = writer(open(OUTPUT_CSV_FILE, 'w'))
for l in lines:
    csv_writer.writerow(l)