【发布时间】:2018-07-11 21:53:18
【问题描述】:
我正在尝试学习如何在 python 中使用 Unicode。
假设我有一个包含 Unicode 字符的文件 test:
áéíóúabcdefgçë
我想制作一个打印出文件中所有唯一字符的python脚本。这就是我所拥有的:
#!/usr/bin/python
import sys
def main():
if len(sys.argv) < 2:
print("Argument required.")
exit()
else:
filename = sys.argv[1]
with open(filename, "r") as fp:
string = fp.read().replace('\n', '')
chars = set()
for char in string:
chars.add(char)
for char in chars:
sys.stdout.write(char)
print("")
if __name__ == "__main__":
main()
这不能正确打印 Unicode 字符:
$ ./unicode.py test
▒a▒bedgf▒▒▒▒c▒▒
这样做的正确方法是什么,以便正确打印字符?
【问题讨论】:
-
你使用的是什么版本的 Python,你在什么平台上?那个文件
test存储在什么编码中? -
如果您不知道如何回答最后一部分,如果您使用的是 Python 3,请尝试以下操作:
with open(filename,'rb') as f: print(f.read()),然后向我们展示打印出来的b'…whatever…'。跨度> -
一旦你有了编码,如果它是非标准的,你应该以二进制文件(
open(filename, 'rb'))打开文件,然后在读取字符串上使用.decode([encoding name]) -
Python 2.7.5,运行 Scientific Linux 7(类似于 red hat 和 centos)。编码为:text/plain; charset=utf-8.
-
@csunday95 你提出的方法比
open(filename, encoding=[encoding_name])有什么优势?
标签: python unicode python-2.x