Web*_*ode 3 python utf python-2.7
我有UTF-8文件,我想用一些HTML标签替换一些2字节的字符.
我想为此制作Python脚本.只需读取文件,char by char,然后输入if等等.
我遇到的问题是,如果我通过char读取char,我正在读取一个字节,但有些字符是1字节,有些是2字节长.
怎么解决?
我基本上需要通过char读取char的功能,但它会知道这个char大小为1或2个字节.
您需要在指定正确的编码时打开文件.在Python 3中,已经完成了
with open("myfile.txt", "r", encoding="utf-8-sig") as myfile:
contents = myfile.read()
for char in contents:
# do something with character
Run Code Online (Sandbox Code Playgroud)
在Python 2中,您可以使用该codecs模块:
import codecs
with codecs.open("myfile.txt", "r", encoding="utf-8-sig") as myfile:
contents = myfile.read()
for char in contents:
# do something with character
Run Code Online (Sandbox Code Playgroud)
请注意,在这种情况下,Python 2不会执行自动换行转换,因此您需要\r\n显式处理行结尾.
作为替代方案(Python 2),您可以正常打开文件并在之后解码; 这会将行结尾标准化为\n:
with open("myfile.txt", "r") as myfile:
contents = myfile.read().decode("utf-8-sig")
for char in contents:
# do something with character
Run Code Online (Sandbox Code Playgroud)
请注意,在这两种情况下,您将最终使用Python 2中的Unicode对象,而不是字符串(在Python 3中,所有字符串都是Unicode对象).
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |