基于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'
所以主要问题仍然存在 - 替换
答案 0 :(得分:2)
尝试str.replace()
方法 - 应该使用unicode字符串。
str.replace(old, new[, count])
返回字符串的副本,其中所有出现的substring old都替换为new。如果给出了可选参数计数,则仅替换第一次计数出现次数。
确保您的old
和new
字符串的类型为Unicode
(这也适用于您的输入数据)。
找出你的输入(非unicode)字符串应该被编码的内容。
例如,它可能采用latin1
编码。
使用内置str.decode()
方法创建数据的Unicode版本,
并将其提供给str.replace()
。
>>> unioldchars = oldchars.decode("latin1")
>>> newdata = data.replace(unioldchars, newchars)
答案 1 :(得分:0)
我自己做。如果您想要多个有效的替换,内置替换功能几乎没用。
看看:http://code.activestate.com/recipes/81330-single-pass-multiple-replace/
编辑:等待,您想要替换客户端,就像在文本框中一样?
答案 2 :(得分:0)
string.translate(s,table [,deletechars])
删除deletechars中s的所有字符(如果 现在),然后使用表来翻译字符,这必须是 一个256个字符的字符串,为每个字符值提供翻译, 由其序数索引。如果表为None,则只删除字符 步骤已经完成。
另见http://docs.python.org/library/string.html#string.maketrans