我有一个包含大量句子的数据文件,编码如下:
“Gib mir bitte Erk \ u00e4ltung”
我还有一个包含大量关键字的数据文件,编码如下:
“Erkältung”
我想在句子中搜索关键字,然后以“Erkältung”格式将它们写入文件。
如何将\ u00e4转换为ä而不必执行:
String.replace('\ u00e4','ä')
更确切地说,我希望在Python 2.6中返回一个匹配:
(#coding:utf-8)
sentence = "Gib mir bitte Erk\u00e4ltung"
keyword = "Erkältung"
re.search(keyword, line)
任何提示?
答案 0 :(得分:3)
Python内置了一些方便的字符编码转换。在这种情况下,unicode_escape
就是你想要的。当您阅读句子时,请在进行搜索之前将其转换为:
# Original sentence:
>>> s = "Gib mir bitte Erk\u00e4ltung"
>>> print s
Gib mir bitte Erk\u00e4ltung
>>> print repr(s)
'Gib mir bitte Erk\\u00e4ltung'
# Converted sentence:
>>> sc = s.decode('unicode_escape')
>>> print sc
Gib mir bitte Erkältung
>>> print repr(sc)
u'Gib mir bitte Erk\xe4ltung'
答案 1 :(得分:1)
要使用\u00e4
编码字符读取文件,请使用
fp = open('sentence.txt', 'r')
sentence = fp.read().decode('unicode-escape')
fp.close()
print repr(sentence) # -> u'Gib mir bitte Erk\xe4ltung'
然后在不转义的情况下读取文件:
import codecs
fp = codecs.open('keyword.txt', 'r', encoding='utf-8')
keyword = fp.read()
fp.close()
print repr(keyword) # -> u'Erk\xe4ltung'
然后你们都有相同的格式
fp = codecs.open('result.txt', 'a', encoding='utf-8')
if re.search(keyword, sentence, re.UNICODE) :
fp.write(sentence)
fp.close()
答案 2 :(得分:0)
非正则表达式解决方案(首选):
s = s.decode('unicode_escape')
正则表达式解决方案:
s = re.sub(r'\\u([a-fA-F0-9]{4})', lambda m: unichr(int(m.group(1), 16)), s)