我尝试使用Python设置基于csv文件的变量。我的CSV文件中有两列,并希望以两种方式之一设置变量。
mycsv.csv按以下方式设置:
moogah,bar
foo,test
第一种方式:
string = str(lineEdit.text())
with open('mycsv.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
if row[0] == string:
setFirst = str(row[0])
setSecond = str(row[1])
QMessageBox.information(None, 'myvariable %s' % setFirst)
如果' foo'输入到lineEdit中,这应该设置如下变量:
setFirst = 'foo'
setSecond = 'test'
对于QGIS插件而言,变量未正确设置。 QMessageBox仅显示' myvariable'即使字符串匹配,也不是实际结果。我猜测CSV读卡器存在问题。
我希望这样做的第二种方式是使用dict:
with open('mycsv.csv', 'rb') as f:
myDict = dict(csv.reader(f, delimiter=',')
我没有正确地将我的lineEdit输入字符串与字典项进行比较,因为我并不总是得到理想的结果。
myDict = {'moogah':'bar', 'foo':'test'}
for key in myDict.keys():
for value in myDict.values():
if key == string:
variable1 = key
variable2 = value
我得到了一个结果,其中variable1 =' moogah'和变量2 ='测试',而我希望它始终是:
scenario 1: variable1 = moogah AND variable2 = bar
scenerio 2: variable1 = foo AND variable2 = test
答案 0 :(得分:0)
我想出了迭代字典的正确方法,所以我决定采用第二种方式(虽然我还不确定为什么第一种方式不起作用,所以如果您愿意,请发表评论。
for key, value in myDict.items():
if key == string:
variable 1 == key
variable 2 == value