双引号(“xxx”)在使用Python从文件读取字符串时意外地更改为两个双引号(“”xxx“”)

时间:2012-05-09 09:24:04

标签: python string quotes decode

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

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

.rc源文件中的行:

La fonction“Testdetélécopie”vérifie。

Python shell中的输出字符串:

La fonction“”Testdetélécopie“”vérifie。

我做过的一些活动:

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源字符串中的双引号Hex代码为:

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

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

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

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

最诚挚的问候, ;)

2 个答案:

答案 0 :(得分:2)

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

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

如下面的字符串: GUI期待 - 你好吗,“马克”?

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

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

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

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

我非常感谢所有帮助我确定上述问题的人。

答案 1 :(得分: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