使用Python从CSV设置变量

时间:2014-08-02 00:42:41

标签: python pyqt

我尝试使用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

1 个答案:

答案 0 :(得分:0)

我想出了迭代字典的正确方法,所以我决定采用第二种方式(虽然我还不确定为什么第一种方式不起作用,所以如果您愿意,请发表评论。

for key, value in myDict.items():
    if key == string:
        variable 1 == key
        variable 2 == value