2016-05-07 3 views
0

Я пытаюсь создать систему имен для Leaderboard. Я создал текстовые файлы для лидеров, он заполняет каждый текстовый файл в конце и читает его в таблице лидеров.Python: Получение, если переменные содержат одинаковые строковые данные

Я также сделал имена в виде текстовых файлов. Причина этого заключается в том, чтобы избежать того, чтобы пользователи вставляли одинаковые имена в текстовый файл.

Имя система:

Пользователь вводит имя в QLineEdit -> Нажмите кнопку-х, который подключается к основной функции системы имен представить -> Имя будет написано в Имени текстовых файлов.


Существует переменный список, который читает все строки в файле, в этом случае я определил его как data6.

Я попытался это:

  for name2 in self.data6: 
       if self.name.text() in name2: 
       print "True" 

получил ошибку:

TypeError: 'in <string>' requires string as left operand, not QString

Пробовал это тоже:

for name2 is self.data6: 
      if self.name.text() in name2: 
      print "True" 

Но заявление было ложным.

for name2 == self.data6: 
      if self.name.text() in name2: 
      print "True" 

Заявление было ложным в этом буле.

self.name.text() является QLineEdit переменная, name2 является первой переменной строки в data6 (Array переменная, которая считывает все строки в имени файла)

Как я могу получить, если self.name.text() и name2 содержат одни и те же данные, так что я могу запретить одинаковые имена в файле ,

Или это может быть проблема PyQt, в первом коде «QString».

+1

Просто заверните 'QString' в' str' для преобразования в строку python. –

+0

Да, это то, что я точно сделал сейчас, и это сработало, спасибо! – ShellRox

+1

@PaulRooney. Преобразование с использованием 'str' является ошибкой. Всегда конвертируйте с помощью 'unicode', чтобы символы не-ascii обрабатывались правильно. – ekhumoro

ответ

0

У меня есть проблема с преобразованием QString в str.

 for name2 in self.data6: 
      if str(self.name.text()) in name2: 
      print "True 
+1

Может быть более эффективным сделать преобразование перед циклом. Чтобы вы не повторяли одно и то же преобразование для каждой итерации цикла. Это, вероятно, не имеет никакого значения, но стоит упомянуть. –

+0

Правильный способ решения этой проблемы - поместить 'import sip; sip.setapi ('QString', 2) 'в начале вашего приложения. Это автоматически преобразует any'QString' в строку python, поэтому вам никогда не придется делать преобразования самостоятельно. – ekhumoro

Смежные вопросы