繁体   English   中英

Python Unicode字符

[英]Python Unicode characters

我知道这个主题不是新话题,但是我尝试了很多解决方案,但没有成功。 我正在使用Python 2.7(不是非常有经验的用户)。 我的问题:我读了一个文件:

my_file=open("file")

然后将一行(其中包含“pitié”一词保存到变量中,然后将其打印出来)

line=my_file.readline()
print line
>> pitié

在那里,我得到了“皮蒂”。 但是,如果要操作它,我会发现我的变量(字符串)包含一些字节:

line
>> 'piti\xc3\xa9'

我的问题是,当我需要执行一些操作来操纵此字符串时,我需要具有“é”字符。 例如,将其放在Flask模板中。 我尝试了一些编码/解码操作,但是我很困惑。 我得到平常的

UnicodeDecodeError: 'ascii' codec can't decode byte 0x.. in position .: ordinal not in range(...)

打印功能如何提供正确的输出?

谢谢 !

欢迎来到Unicode世界! 您的文件以UTF-8(一种多字节编码)保存,因此ASCII范围在0-127之间的字符需要两个或更多字节。 使用codecsio模块读取文件,并声明编码,以便将其读取为Unicode字符串,并且最多65535的非ASCII代码点将是单个代码点。 切换到Python 3.3+,所有Unicode代码点将成为一个代码点。

请注意,下面示例的第一行声明了源文件的编码。 它不必与数据文件的编码匹配,而是使用它,因此Python知道源中文字Unicode字符串u'é'的编码。

#coding: utf8
import io

with io.open('file',encoding='utf8') as my_file:
    line = my_file.readline()
print line
print repr(line)
print line.index(u'é')

输出:

pitié
u'piti\xe9'
4

您将看到两种不同的显示方法: print向您显示漂亮的版本,而仅键入line则为您提供原始的“ repr”版本。 字符串没有问题。 如果将其写入文件,它将与原始输入文件中的一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM