我在Python中编写了一个小脚本来帮助我处理大型.csv
文件,但我目前遇到了一些问题......
在程序的主程序中,它会提示用户输入,然后调用一个参考这些选项的函数,如...(仅显示选项一):
def Main():
response = input('1, 2 or 3? ')
if response == 1:
ID = input('Enter your ID: ')
Response_one(ID)
此函数Response_one
然后打开文件,我希望它在搜索之前找到用户输入的ID
变量在.csv
中出现的位置,然后再打印该行。到目前为止,我有这样的事情:
def Response_one(ID):
file_csv = csv.DictReader(open('my_file.csv'))
for row in file_csv:
if row['ID'] == ID:
print row
我通过在线跟踪一些事情来达到这一点但我现在陷入了困境。我一直在测试表中存在的ID,例如'ENSG00000210049',但是我收到错误消息:
NameError: name 'ENSG00000210049' is not defined
非常感谢任何帮助。
答案 0 :(得分:4)
您的主要问题是input
功能。由于this:
Python 2.7中的输入函数,评估你输入的内容,作为a Python表达式。如果您只想阅读字符串,请使用 Python 2.7中的raw_input函数,它不会评估读取 字符串。
如果您使用的是Python 3.x,则raw_input已重命名为input。 引用Python 3.0发行说明
但是,让我们给你一个很好的例子来解决你。
<强> data.csv 强>
ID,DATA
1,a
2,b
3,c
Python 2的示例代码
id = raw_input('what id?: ')
with open('data.csv', 'rb') as f:
for row in csv.DictReader(f):
if row['ID'] == id:
print row
Python 3的示例代码
id = input('what id?: ')
with open('data.csv', 'rb') as f:
for row in csv.DictReader(f):
if row['ID'] == id:
print row
示例强>
what id?: 1
{'ID': '1', 'DATA': 'a'}