问题:在unix机器上运行下面的代码,但在运行windows时同样的代码可以正常工作

2024-10-02 16:27:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用下面的代码将unicode字符替换为ascii字符。同样的代码在windows机器上运行,但在unix机器上运行时,我遇到错误:

"TypeError: expected a character buffer object"

#!/usr/bin/python2
# coding=utf-8
import sys

s = open(sys.argv[1], "r")

table = {
          0xe4: u'a',
          ord(u'ö'): u'o',
          ord(u'ü'): u'u',
          ord(u'é'): u'e',
          ord(u'ß'): u'b',
        }

for i in s:
    print ("Translated Content in file:",str(i).translate(table));
s.close()

输入文件(utf8.txt)传递给包含以下内容的脚本

sömé täßt
sömé täßt
sömé täßt

预期结果是:

Translated Content in file: some tabt

Translated Content in file: some tabt

Translated Content in file: some tabt

在Unix机器上的实际结果:

Traceback (most recent call last):
  File "unicode.py", line 17, in <module>
    print ("Translated Content in file:",str(i).translate(table));
TypeError: expected a character buffer object

需要关于这个问题的建议。你知道吗


Tags: 代码in机器tableunicodesomecontent字符
2条回答

我明白了,问题是您需要将处理划分为字符,而现在您直接应用于字符串。你能看看这个代码吗:

for i in s: 
    translated = u'' 
    for c in i.decode('utf8'): 
        translated = translated+table.get(ord(c),c) 
    print ("Translated Content in file:",translated);

您可以跳过使用translate,而是直接访问表(作为字典):

for i in s:
    print ("Translated Content in file:",table.get(str(i),str(i)));

相关问题 更多 >