2015-12-03 75 views
1

我正在創建一個函數,它使用字典替換文本文件中的單詞,即如果在文件中遇到第一個單詞對,由第二個取代。此外,當GUI中的小部件被用戶佔用時創建的功能被調用。所以創建的函數都存在於一個UI類中。 (希望這是有道理的)。我正在使用pythonPython:TypeError:QString .__ getitem __():參數與任何重載調用不匹配

字典看起來像這樣(dictlist = {'test':'rest','happy':'sad','big':'small'})。該函數直接在Python編輯器中編寫時工作正常,但是當我將它複製到翻譯的.ui代碼時,出現以下錯誤。任何人都可以建議爲什麼會發生這種情況。我對此很陌生,所以希望我的解釋有道理。

line = rpairs(line, dictlist) 
line 1486, in rpairs 
temp = temp.replace(key, dictlist[key]) 
TypeError: QString.__getitem__(): arguments did not match any overloaded call: 
overload 1: argument 1 has unexpected type 'QString' 
overload 2: argument 1 has unexpected type 'QString' 

def temp(self): 
    import string 
    global filename 
    global mytemp 
    dictlist = self.lineEdit_dict.text() 
    filename2 = self.lineEdit_outputfilename.text() 

    f1 = open(filename, 'r')  
    f2 = open('filename2', 'w') 

    def rpairs (temp, dictlist): 
     for key in dictlist: 
      temp = temp.replace(key, dictlist[key]) 
     return temp 

    for line in f1: 
     line = rpairs(line, dictlist) 
     f2.write(line) 
    f2.close() 
    return mytemp 
+0

您是否試圖通過閱讀self.lineEdit_dict.text()來構造'dictlist'作爲字典?或者您已經在程序代碼中使用了它? –

回答

0

你爲QString初始化dictlist不是dict

dictlist = self.lineEdit_dict.text() 

,而你試圖訪問到它作爲一個dictdictlist[key]

您還很多其他問題如f2 = open('filename2', 'w') d是f2 = open(filename2, 'w')

+0

@ Marco。非常感謝您的回覆。我已經修改了公開聲明中的類型。 – Sren

+0

@Marco。關於單詞問題/評論,因爲我是新手,我不明白你是什麼意思,我用QString而不是字典初始化了Dictlist,並試圖以字典的形式訪問它。你有什麼建議可以解決這個問題嗎?我對QString沒有很強的理解。 – Sren

+0

@bigbrother:關於dictlist問題/評論,因爲我是新手,我不明白你是什麼意思,我用QString而不是字典初始化dictlist,並試圖以字典的形式訪問它。你有什麼建議可以解決這個問題嗎?我對QString沒有很強的理解。 – Sren

相關問題