Edu*_*rdo 4 python string qt replace str-replace
我有一个Python字符串,我想\include在一个乳胶文件中.但是,我的字符串有一个下划线字符(_),\_在包含之前需要将其转换为(这是_的乳胶表示).
如果我做:
self.name = self.laser_comboBox.currentText() #Get name from a qt widget
latex_name = self.name.replace("_", r"\_") #Replacing _ for \_
print self.name
print latex_name
Run Code Online (Sandbox Code Playgroud)
我去拿:
XXXXXX-YY\_SN2017060009
XXXXXX-YY\_SN2017060009
Run Code Online (Sandbox Code Playgroud)
可以看出,两个变量都被替换了.这意味着该replace方法就位.但是,如果我这样做:
self.name = self.laser_comboBox.currentText() #Get name from a qt widget
latex_name = str(self.name).replace("_", r"\_") #Converting to str and then replacing _ for \_
print self.name
print latex_name
Run Code Online (Sandbox Code Playgroud)
我去拿:
XXXXXX-YY_SN2017060009
XXXXXX-YY\_SN2017060009
Run Code Online (Sandbox Code Playgroud)
这让我很困惑......我想知道为什么会这样......
我在这里做了一些测试,我想我找到了答案.
我的var self.name有一个<class 'PyQt4.QtCore.QString'>类型,因为我从QtWidget获取它.有人,请纠正我,如果我错了,但是从我运行的测试和文档(http://doc.qt.io/qt-5/qstring.html#replace)看来,这个replace方法<class 'PyQt4.QtCore.QString'>发生在现场.而对于Python str,它并不是因为python字符串是不可变的.
简而言之:
str:( inplace=FalsePython字符串是不可变的)PyQt4.QtCore.QString: inplace=True无论如何,希望这会有所帮助