脚本读取包含我的复制粘贴文本的文件。它对文本数据进行一些操作并返回结果。
但是当python读取文件时,它会将其保存在带有单引号的变量中,而其他一些字符编码如:\xe2\x80\x99
,\xe2\x80\x9
,\xe2\x80\x99
等等。
仅当我从网页复制粘贴文本时才会发生这种情况。如果我在文件中键入相同的文本并在之后读取该文件,则单引号和其他字符不会使用特殊字符进行转义。
文件名是'text.txt'。我用一个编辑器打开它,默认情况下将所有内容保存在utf-8中。我打开一个新闻网页(例如:http://www.euronews.com/2013/05/31/why-it-s-not-so-great-in-britain/)并将文本复制到'text.txt'文件中。之后:file=open('text.txt', 'r').read()
并在python2控制台中点击file
。
In [62]: file=open('text.txt', 'r').read()
In [63]: file
Out[63]: 'Britain\xe2\x80\x99s generous system... David Cameron:\xe2\x80\x9c What we can do is make sure...they\xe2\x80\x99re drawn by the attractiveness...\xe2\x80\x9d'
1)你能解释一下这种行为吗?
2)如何在没有转义字符的情况下对复制的文本进行python读取?
答案 0 :(得分:3)
In [1]: text = 'perchè'
In [2]: text
Out[2]: 'perch\xc3\xa8'
In [3]: print text
perchè
当您评估ipython调用其repr
方法时。字符串的repr
方法显示转义而不是实际字符。这是你真正想要的,因为它避免了stdout编码的问题,并且还允许你看到字符串中实际存在的字符(想想unicode获取相同字符的多种方式)。
要查看真实字符,您应该将字符串写入stdout(假设stdout可以处理字符串的编码等。)
答案 1 :(得分:0)
由于某种原因, euronews.net 网页文字似乎以这种方式显示。当我从任何其他网站复制带引号的任何文字时,我只有简单的don\'t
转义。