我想在Python 2.7.8中创建一个regex语句来替换字符。它的工作原理是这样的。
ó -> o
ú -> u
é -> e
á -> a
í -> i
ù,ú -> u
这些是我想要更改的唯一unicode字符。像ë, ä
这样的unicode字符,我不想改变。因此,单词thójlà
将变成tholja
。我确信有一种方法可以让我不必像下面这样单独创建所有的正则表达式。
word = re.sub(ur'ó', ur'o', word)
word = re.sub(ur'ú', ur'u', word)
word = re.sub(ur'é', ur'e', word)
....
我一直在尝试解决这个问题,但一直没有任何运气。如有任何帮助,我们不胜感激!
发布于 2014-12-08 23:39:19
尝试使用str.translate and maketrans
...
print('thójlà'.translate(str.maketrans('óúéáíùú', 'oueaiuu')))
# thojlà
这样,您就可以确保只进行您想要进行的替换。
如果要更改许多字符串,则应将maketrans分配给一个变量,如
table = str.maketrans('óúéáíùú', 'oueaiuu')
然后,每个字符串都可以被翻译为
s.translate(table)
发布于 2014-12-08 23:18:53
使用String的replace()
函数,您可以执行以下操作:
x = "thójlà"
>>> x
'thójlà'
>>> x = x.replace('ó','o')
'thojlà'
>>> x = x.replace('à','a')
'thojla'
一种概括的方式:
# -*- coding: utf-8 -*-
replace_dict = {
'á':'a',
'à':'a',
'é':'e',
'í':'i',
'ó':'o',
'ù':'u',
'ú':'u'
}
str1 = "thójlà"
for key in replace_dict:
str1 = str1.replace(key, replace_dict[key])
print(str1) #prints 'thojla'
第三种方法是,如果字符映射列表变得太大:
# -*- coding: utf-8 -*-
replace_dict = {
'a':['á','à'],
'e':['é'],
'i':['í'],
'o':['ó'],
'u':['ù','ú']
}
str1 = "thójlà"
for key, values in replace_dict.items():
for character in values:
str1 = str1.replace(character, key)
print(str1)
发布于 2014-12-08 23:17:15
如果可以使用外部包,我认为最简单的方法是使用unidecode。例如:
from unidecode import unidecode
print(unidecode('thójlà'))
# prints: thojla
https://stackoverflow.com/questions/27368727
复制相似问题