объект ‘QString’ не имеет атрибута ‘strip’?

#python #pyqt

#python #pyqt

Вопрос:

Итак, я пытаюсь прочитать веб-страницу с помощью mechanize.Модуль Browser() в Python. Проблема в том, что br.open (url) не работает, потому что python возвращает ошибку в заголовке.

Вот код:

 url = "http://www.myserver.com/prda.php?validate="   licensey
readurl = br.open(url).read()
  

В последней строке я получаю:

 File "/usr/lib/python2.7/urllib.py", line 1038, in unwrap
url = url.strip()
AttributeError: 'QString' object has no attribute 'strip'
  

Я пытался использовать unicode (readurl), unicode (br.open(url).read()), readlines() вместо read(), str (вместо unicode)… Я либо получаю ту же ошибку, либо нет вывода из br.open.read()

Помочь?

Комментарии:

1. Есть ли вероятность licensey , что это QString?

2. Вы уверены, что показываете нам весь код? Является licensey QString или другим подобным строке, но на самом деле не строковым объектом?

3. Ха, спасибо вам обоим, ребята. лицензией действительно была QString. После выполнения str (лицензирование) программа заработала! Большое спасибо!

4. Вы можете ответить и принять это, иначе это останется открытым вопросом. 🙂

Ответ №1:

Я предполагаю, что вы разрабатываете приложение PyQt, а ‘licensey’ — это входные данные, которые вы берете из некоторого элемента ‘QTextEdit’.

В вашем приложении ‘URL’ имеет тип ‘QString’. И в типе данных ‘QString’ нет метода ‘strip’. Поскольку метод open() ожидает, что вы отправите параметр типа ‘str’, вам просто нужно ввести переменную ‘url’.

Просто добавьте строку

 url = str(url)
  

перед вызовом метода откройте (URL). Надеюсь, это поможет 🙂

Ответ №2:

Действительно странно, что PyQt QString не включает в себя метод strip(), но у него есть метод trimmed(), который делает то же самое. Смотрите здесь:http://pyqt.sourceforge.net/Docs/PyQt4/qstring.html#trimmed. Чего действительно не хватает в PyQt, так это вариантов lstrip() и rtrip().