这是一个示例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
我怎样才能做到这一点?
答案 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)