从包含字符'ç'的.tex文件中读取时,我遇到了问题。在这里阅读了很多关于堆栈和Python的Python文档后,我已经设法阅读它,但现在我在显示它时遇到问题,而不是得到'ç'我的gui正在显示'ç'。 我的代码执行以下操作:
从文本文件中读取 - >转换.tex特殊字符 - >在gui上显示
读取数据的功能:
def load_info(path, param):
target = open(r'{}\{}.tex'.format(path, param), 'r')
#read the line bellow on a stack topic and it seems to work
value = target.read().decode('string-escape').decode("utf-8")
print value, type(value) #here I get ç and unicode type
target.close()
return value
处理Latex特殊字符的功能:
def LatexFormatting(self, text):
print text, type(text) #Here I receive "ç, unicode"
text = text.replace("$\\backslash$", "\\")
text = text.replace("\\_", "_")
text = text.replace("\\#", "#")
text = text.replace("\\$", "$")
text = text.replace("\\%", "%")
text = text.replace("\\&", "&")
text = text.replace("\\~", "~")
text = text.replace("\\^", "^")
text = text.replace("\\{", "{")
text = text.replace("\\}", "}")
text = text.replace("\n", "\\n")
text = text.replace("\r", "\\r")
return text
在gui上显示它的功能:
#I use exec here because there are several gui elements that I need to display texts onto
exec(u'self.ui.{}.setPlainText("{}")' .format(parameter_name, self.LatexFormatting(param_value)))
在我看来,这是某种错误的编码/解码,因为它显示的东西,但不是写东西。
PS:我正在使用Python 2.7和Pyqt4
感谢您提供的任何帮助
- 编辑 -
正如下面的评论中所建议的那样,我已将exec
方法更改为getattr
,这解决了我的问题。