我需要根据一组自定义的替换替换替换unicode。基本上是由其他人定义的替换。现在我已经将所有需要的替换提取到一个csv文件中。下面是一个示例:
\u0020,
\u0021,!
\u0023,#
\u0024,$
\u0025,%
\u0026,&
\u0028,(
\u0029,)
\u002a,*
\u002b,+
\u002c,","
\u002d,-
\u002e,.
\u002f,/
\u03ba,kappa
...
我在msexcel中生成了这个,它是通过破解API所有者在需要进行转换时自己使用的java程序(不……当API接收到输入时,他们不会仅仅运行转换器)。定义了大约1500个替换。在
当我生成输出(从我的Django应用程序)作为输入发送到它们的API时,我想处理替换。以下是我一直试图做到的:
^{pr2}$问题是csv文件中的unicode代码显示为,例如,self.mapping[example][0] = '\\u00e0'
。好吧,那就错了,让我们试试:
mapping.append( (row[0].decode("string_escape"), row[1]) )
没有变化。怎么样:
mapping.append( (row[0].decode("unicode_escape"), row[1]) )
好了,现在self.mapping[example][0] = u'\xe0'
。所以是的,这是我需要替换的字符…但是我需要调用replace_UTF8()函数的字符串看起来像u'\u00e0'
。在
我也试过row[0].decode("utf-8")
,row[0].encode("utf-8")
,unicode(row[0], "utf-8")
。在
我也尝试了this,但是csv文件中没有unicode字符,我有unicode代码点(不确定这是否是正确的术语或什么)。在
那么,如何将从csv文件中读入的字符串转换成可以与mythi一起使用的unicode字符串需要转换的长度。更换(...)? 在
或者…我需要对csv文件做些其他的事情来使用更合理的方法吗?在
我不认为你的问题真的存在:
这些只是同一字符串的不同表示。您可以自己测试:
实际的问题是你没有做任何替换。在本规范中:
^{pr2}$您只是反复调用
string.replace
,它返回一个新字符串,但对string
本身没有任何作用。(它不能对string
本身做任何事情;字符串是不可变的)但是,如果
string
真的是一个UTF-8编码的str
,正如函数名所暗示的那样,这仍然行不通。当你用UTF-8编码u'\u00e0'
时,你得到的是'\xce\xa0'
。里面没有要替换的\u00e0
。所以,你真正需要做的是解码,替换,然后重新编码。像这样:或者,更好的方法是,在整个程序中保持
unicode
而不是编码的str
,这样你就不必担心这些东西了。在最后,当字符串(无论是} 方法来完成您想要的操作时,这是一种非常缓慢和复杂的替换方法。在
str
和unicode
)都有一个内置的^{与其将表构建为Unicode字符串对的列表,不如将其构建为将序号映射到序号的dict映射:
现在,整个过程都是一行代码,即使你的编码一团糟:
相关问题 更多 >
编程相关推荐