Qt的QRegExp類完全沒問題,但是python的re模塊更加靈活。一般情況下,字符串處理也是如此 - 如果你需要在PyQt程序中進行大量的字符串處理,通常最好在python中完成,如果可以的話。
轉換QString很容易。在python2,你只需要做:
string = unicode(qstring)
而且通常有沒有必要將其轉換回:任何Qt的API,需要爲QString會從PyQt的一個Python字符串被自動轉換。
更通用的QString轉換解決方案是使用sip module(在PyQt安裝的位置應該已經可用)在全球範圍內完成。這需要在你的PyQt程序的開始做,任何PyQt的模塊都是進口之前,像這樣:
import sip
sip.setapi('QString', 2)
from PyQt4 import QtCore, QtGui
這樣做了以後,任何的Qt的API,通常會返回的QString會返回一個Python的Unicode對象代替。有關此功能的更多信息,請參閱PyQt文檔中的Selecting Incompatible APIs。
雖然最初可能需要多一點工作,但從長遠來看,採用這條路線可能是最好的。首先,如果你需要這樣做的話,它將使得移植到python3更容易。對於python3,默認情況下選擇版本2 API,因此不需要上述setapi
步驟。
請注意底部是否爲此頁面:http://qt-project.org/doc/qt-4.8/qregexp.html QRegexp不能很好地處理多行模式。 – Stephan