С классом QRegExp в Qt все в порядке, но модуль re в python гораздо более гибкий. И то же самое касается обработки строк в целом — если вам нужно выполнить большую обработку строк в программе PyQt, часто лучше всего сделать это на python, если вы можете.
Преобразование QString довольно просто. В python2 вам просто нужно сделать:
string = unicode(qstring)
И обычно нет необходимости преобразовывать его обратно: любой API Qt, для которого требуется QString, будет автоматически преобразован из строки python с помощью PyQt.
Более общим решением для преобразования QString является глобальное преобразование с использованием sip-модуля (который уже должен быть доступен везде, где установлен PyQt). Это необходимо сделать в начале вашей программы PyQt, прежде чем любой из модулей PyQt будет импортирован, например:
import sip
sip.setapi('QString', 2)
from PyQt4 import QtCore, QtGui
После этого любой API Qt, который обычно возвращает QString, вместо этого будет возвращать объект unicode python. Дополнительные сведения об этой функции см. в разделе Выбор несовместимых API в документы PyQt.
Хотя поначалу это может потребовать немного больше работы, выбор этого пути, вероятно, будет лучшим в долгосрочной перспективе. Во-первых, это упростит перенос на python3, если вам когда-нибудь понадобится это сделать. Для python3 по умолчанию выбирается API версии 2, поэтому указанный выше шаг setapi
не требуется.
person
ekhumoro
schedule
18.12.2013