无法找到此解决方案的答案,因此一旦我弄清楚了,我想我应该重新发布我的解决方案......
我正在寻找一种获取用户输入 (sys.argv[1]
) 并使用该值在 CSV 文件中查找 x 列中的另一个值(例如 5 )。这将是一个更大脚本的一部分,我将使用查找到的值作为测试。
我的 csv 示例是:
col0,col1,col2,col3,col4
a,foo,bar,blah,1
b,foo,bar,blah,2
c,foo,bar,blah,3
d,foo,bar,blah,4
e,foo,bar,blah,5
f,foo,bar,blah,6
g,foo,bar,blah,7
h,foo,bar,blah,8
i,foo,bar,blah,9
j,foo,bar,blah,10
k,foo,bar,blah,11
l,foo,bar,blah,12
m,foo,bar,blah,13
n,foo,bar,blah,14
o,foo,bar,blah,15
p,foo,bar,blah,16
q,foo,bar,blah,17
r,foo,bar,blah,18
s,foo,bar,blah,19
t,foo,bar,blah,20
u,foo,bar,blah,21
v,foo,bar,blah,22
w,foo,bar,blah,23
x,foo,bar,blah,24
y,foo,bar,blah,25
z,foo,bar,blah,26
最佳答案
我快速浏览了您的 Javascript 问题,如果您只映射字母表中的 char->position,那么以下怎么样?
def char_to_pos(char):
from string import ascii_lowercase
try:
return ascii_lowercase.index(char) + 1
except ValueError as e:
pass # no match - do what's sensible here
如果您想预先生成一个查找表,则类似于:
from string import ascii_lowercase
from itertools import count
lookup = dict(zip(ascii_lowercase, count(1)))
# or depending on taste
lookup = {letter: idx for idx, letter in enumerate(ascii_lowercase, start=1)}
否则,由于 CSV 文件通常相对较小,您可以将整个文件加载到 RAM 中,以避免以后重复顺序查找(只要 CSV 不太大,就会使您的计算机陷入昏迷)
with open('test1.csv') as fin:
csvin = csv.reader(fin)
lookup = {row[0]: row for row in csvin}
to_find = 'x'
try:
print '{} = {[4]}'.format(to_find, lookup[to_find])
except (KeyError, IndexError) as e:
pass # KeyError = no lookup match, IndexError is that CSV file didn't have 5th column...
关于Python:使用变量作为 CSV 中的查找引用并返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12422968/