1

这是一个困扰我很多关于 Python 的问题,我真的可以在这方面使用一些帮助:

我正在尝试从文件中读取一些字符串。这些文件是 .rc 后缀,其中每个文件都包含一种本地化字符串。基于不同的语言,我使用不同的代码页进行解码。这里我只以法语文件为例,它的代码页是1252。可悲的是,每次如果有双引号,当我在Python shell中打印字符串时,都会意外出现两个双引号。

.rc 源文件中的行:

La fonction "Test de télécopie" 验证。

Python shell 中的输出字符串:

La fonction ""Test de télécopie"" 验证。

我做过的一些活动:

f = open(filename,"r")         #Used to open .rc source file
for strline in f.readlines():  #Used to read file line by line
    print strline                #Used to print in Python shell

附加信息:

一种。.rc 源字符串中的双引号十六进制代码是:

湾。如果我用网络浏览器打开 .rc 源文件,它也会意外显示两个双引号。

C。.rc 源文件是保密的,所以我没有在这里附上。

d。操作系统:Enu Win7 x64\Python:v2.7

我是 Python 的新手。任何想法都会非常感激。

最好的祝福, ;)

4

2 回答 2

2

所有的误解都来自于我不熟悉 .rc 文件(我以前从未使用过 C++)以及开发人员如何处理字符串。如果我的回答看起来如此未经指导,请不要打我。:)

与相关开发者交谈后,确认是.rc文件创建者添加的一种机制,用于处理字符串中的双引号。

就像下面的字符串:GUI 期望 - 你好吗,“马克”?

在 .rc(或网络浏览器)中-“你好吗,”“马克”“”?

.rc 文件创建者添加了这种机制,即在字符串中添加一个双引号来包围原始字符串,以确保一旦调用该字符串在 GUI 中显示,它就不会被识别为:-“你好吗”,“标记” ?” ==>“你好吗,”标记“?”==>这将是一个混乱的双引号匹配,GUI 无法正确显示。

所以我添加了一个过滤器来删除这个额外的双引号,以获得我想要的。我相信这对 Python 用户来说很容易。

这不是一个专业的答案,但我只是希望让遇到同样问题的人从不同的角度思考。

我非常感谢之前帮助我确定上述问题的每个人。

于 2012-07-04T03:41:33.040 回答
0

您的控制台正在使用 1252 以外的另一个代码页。

编辑:

#!/usr/bin/python
# -*- coding: utf-8 -*-

str=u"""La fonction "Test de télécopie" vérifie."""
print str
flat=str.encode("cp1252")
convts=unicode(flat, encoding="cp850") #Change the testing code page here.
print convts
于 2012-05-09T10:06:18.910 回答