我在Mac OS X 10.6上的python 2.7上运行,文件在utf8中,终端在utf8中。我想在给定字符串中存在的每个元音å,ä或ö之后添加一个句点。这是我要做的事的简明版本:# coding: utf8a = 'change these letters äöå'b = map( (lambda x: a.replace(x, "{0}.".format(x))), 'åäö')for c in b: print c产生以下输出:change these letters ?.??.??.?change these letters äöå.change these letters ?.??.??.?change these letters ä.öåchange these letters ?.??.??.?change these letters äö.å为什么我得到带有问号的行?经过进一步研究,这样做会产生相同的问号。# coding: utf8for letter in 'åäö': print letter输出:??????但是在之前显式添加u会得到# coding: utf8for letter in u'åäö': print letter输出:åäö明确地解码和编码回字符串utf8仍然会产生问号。这里有什么问题?在此循环中发生了什么?旁注:在愚蠢的示例中,您看到我正在尝试做的事情。实际上,我使用的是一个保存字符串的对象,以便映射操作发生在同一字符串上。因此,该map()调用实际上每次都用一个新的元音调用该对象的方法,从而更新了保存在该对象中的字符串。对象的方法使用的第二个参数的元音执行替换,map并更新存储的字符串。
添加回答
举报
0/150
提交
取消