0

基于 PHP4+mySQL4 的项目发布到 Django 1.1 项目,它混淆了一些字母。
以这种方式替换的最佳方法(最有效)是什么?
对我来说,问题是我无法获得这些字母的值。有没有在线工具可以做到这一点?

我有带有各种字母的 textField,我想以这种方式替换它们:

àèæëáðøûþ => ąčęėįšųūž
ÀÈÆËÁÐØÛÞ => ĄČĘĖĮŠŲŪŽ

我有类似的情况,我必须清理代码,所以我使用了这个:

def clean(string):
     return ''.join([c for c in string if ord(c) > 31 or ord(c) in [9, 10, 13]] )

更新:我成功地提取了查看 Django 调试消息的 Unicode 值(replace_from:replace_to):

{'\xe0':'\u0105', '\xe8':'\u010d', '\xe6':'\u0119', '\xeb':'\u0117', '\xe1':'\u012f',
 '\xf0':'\u0161', '\xf8':'\u0179', '\xfb':'\u016b', '\xfe':'\u017e',
 '\xc0':'\u0104', '\xc8':'\u010c', '\xc6':'\u0118', '\xcb':'\u0116', '\xc1':'\u012e',
 '\xd0':'\u0160', '\xd8':'\u0172', '\xdb':'\u016a', '\xde':'\u017d'

所以主要问题仍然存在 - 更换

4

3 回答 3

2

试试这个str.replace()方法 - 应该适用于 unicode 字符串。

str.replace(old, new[, count])

返回字符串的副本,其中所有出现的子字符串 old 都替换为 new。如果给定了可选参数 count,则仅替换第一个 count 出现。

确保您的oldnew字符串是 Unicode 类型(也适用于您的输入数据)。

找出您的输入(非 unicode)字符串应该被编码的内容。例如,它可能在latin1编码中。使用内置str.decode()方法创建数据的 Unicode 版本,并将其提供给str.replace().

>>> unioldchars = oldchars.decode("latin1")
>>> newdata = data.replace(unioldchars, newchars)
于 2011-06-08T15:25:03.550 回答
0

我会自己做。如果您想要多个高效的替换,内置的替换功能几乎没有用处。

看看这个:http ://code.activestate.com/recipes/81330-single-pass-multiple-replace/

编辑:等等,你想做替换客户端,就像在文本框中一样?

于 2011-06-08T15:22:00.353 回答
0

string.translate (s, table[, deletechars])

从 s 中删除 deletechars(如果存在)中的所有字符,然后使用 table 翻译字符,table 必须是一个 256 字符的字符串,给出每个字符值的翻译,按其序数索引。如果 table 为 None,则仅执行字符删除步骤。

另请参阅http://docs.python.org/library/string.html#string.maketrans

于 2011-06-09T08:59:03.620 回答