0

假设我有一本字典:

dict = {'R150': 'PN000123', 'R331': 'PN000873', 'C774': 'PN000064', 'L7896': 'PN000447', 'R0640': 'PN000878', 'R454': 'PN000333'}.

我需要填写此示例 csv 文件:https ://www.dropbox.com/s/c95mlitjrvyppef/sheet.csv

示例行

HEADER,ID,ReferenceID,Value,Location X-Coordinate,Location Y-Coordinate,ROOM,ALT_SYMBOLS,Voltage,Thermal_Rating,Tolerance,PartNumber,MPN,Description,Part_Type,PCB Footprint,SPLIT_INST,SWAP_INFO,GROUP,Comments,Wattage,Tol,Population Notes,Gender,ICA_MFR_NAME,ICA_PARTNUM,Order#,CLASS,INSTALLED,TN,RATING,OriginalSymbolOrigin,Rated_Current,Manufacturer 2,Status,Need To Mirror/Rotate Pin Display Properties,TOLERANCE,LEVEL
,,R150,1,,,,,<null>,<null>,<null>,,,to be linked,Resistor,TODO,<null>,<null>,<null>,<null>,1/16W,?,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>
,,R4737,1,,,,,<null>,<null>,<null>,,,to be linked,Resistor,TODO,<null>,<null>,<null>,<null>,1/16W,?,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>
,,R4738,1,,,,,<null>,<null>,<null>,,,to be linked,Resistor,TODO,<null>,<null>,<null>,<null>,1/16W,?,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>,<null>

具体来说,我需要根据我创建的 dict 的键填写 PartNumber 列。所以我需要遍历列 ReferenceID 并将该值与我在 dict 中的键进行比较。如果有匹配项,我需要用该值(在字典中)填写相应的 PartNumber 单元格......

如果这一切都令人困惑,我很抱歉,我是 python 新手并且在使用 csv 模块时遇到了问题。

4

1 回答 1

0

为了让您开始 - 这是使用该csv.DictReader对象的东西,并循环遍历您的文件,一次一行,并且your_dict根据行的ReferenceID设置存在的内容PartNumber为该值,否则为空字符串。

如果您将其与http://docs.python.org/2/library/stdtypes.html#typesmappinghttp://docs.python.org/2/library/csv.html上的文档结合使用- 您应该能够写出数据并更好地了解正在发生的事情。

import csv

your_dict = {'R150': 'PN000123', 'R331': 'PN000873', 'C774': 'PN000064', 'L7896': 'PN000447', 'R0640': 'PN000878', 'R454': 'PN000333'}
with open('your_csv_file.csv') as fin:
    csvin = csv.DictReader(fin)
    for row in csvin:
        row['PartNumber'] = your_dict.get(row['ReferenceID'], '')
        print row
于 2012-12-07T00:33:15.813 回答