搜索导入的CSV文件以查找特定文本并生成结果字典

2024-09-28 21:57:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个CT胸部检查的大数据集,我需要导入到一个使用python的字典中,搜索选定的文本,然后将选定的行作为csv输出

以下是我目前的代码:

nodule_4mm = '4 mm'
result = {}
csv_columns = ['Rank','Accession1','MRN1','Textbox2',
           'Textbox47','Textbox43','Textbox45',
           'ReadBy','SignedBy','Addendum1','ReadDate',
           'SignedDate','Textbox49','Result','Impression']

rootdir = '/Users/davidbmccoy/Documents/Chest_Nodule_DataMine';
file = 'NodulesEdited.csv'

path = rootdir
os.chdir(path)

reader = csv.DictReader(open(file, 'rU'), delimiter=',', quotechar='"')

for row in reader:
    for column, value in row.iteritems():
        if re.compile(r'\b({0})\b'.format(nodule_4mm), flags=re.IGNORECASE).search:
            result.setdefault(column, []).append(value)
print result

这里面有几个问题。如果'4毫米'是在行中找到我需要它去结果只有一次。在所有带有“4 mm”的行都在结果中之后,我需要将结果导出为csv

任何帮助都将是巨大的,抱歉,如果这里的格式是关闭的。但是,真的,任何帮助都太好了!p>


Tags: csvpathinreforvaluecolumnresult
2条回答

从您描述的内容来看,我认为您唯一缺少的是append命令后面的“break”语句。换句话说,如果你已经找到了'4mm',打破内部循环,这样你就可以进入下一行

我用以下方法解决了这个问题:

reader = csv.DictReader(open(input_file, 'rU'), delimiter=',', quotechar='"')
nodule_size = "([0-4] mm)"

with open (output_file_name, 'w') as f:
    w = csv.writer(f, dialect = 'excel')
    w.writerow(csv_columns)

    for row in reader:
        if re.search(nodule_size,row['Result']) or re.search(nodule_size,row['Impression']):

            w.writerow([row['Rank'],row['Accession1'], row['MRN1'],row['Textbox2'],row['Textbox47'],
                        row['Textbox43'],row['Textbox45'],row['ReadBy'],row['SignedBy'],
                        row['Addendum1'],row['ReadDate'],row['SignedDate'],
                        row['Textbox49'],row['Result'],row['Impression']])

希望能帮助别人!干杯,谢谢你的建议

相关问题 更多 >