gpt4 book ai didi

python - Str 替换方法就地发生

转载 作者:行者123 更新时间:2023-12-04 18:01:59 27 4
gpt4 key购买 nike

我有一个我想要的 Python 字符串 \include在 latex 文件中。但是,我的字符串有一个下划线字符( _ ),需要将其转换为 \_ (这是 _ 的 latex 表示)之前包括在内。

如果我做:

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

我去拿:
XXXXXX-YY\_SN2017060009
XXXXXX-YY\_SN2017060009

可以看出,两个变量都被替换了。这意味着 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

我去拿:
XXXXXX-YY_SN2017060009
XXXXXX-YY\_SN2017060009

这让我感到困惑..我想知道为什么会这样......

最佳答案

我在这里进行了一些测试,我想我已经找到了答案。

我的 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 字符串是不可变的。

所以,简而言之:

  • python str :inplace=False (Python 字符串是不可变的)
  • PyQt4.QtCore.QString :inplace=True

  • 无论如何,希望这会有所帮助

    关于python - Str 替换方法就地发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44802050/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com