4

次のようにエンコードされた、多数の文を含むデータファイルがあります。

"Gib mir bitte Erk \ u00e4ltung"

次のようにエンコードされた、多数のキーワードを含むデータファイルもあります。

「Erkältung」

文章中のキーワードを検索して、「Erkältung」形式でファイルに書き込みたいと思います。

何もしなくても\u00e4をäに変換するにはどうすればよいですか。

String.replace('\ u00e4'、'ä')

もっと正確に言えば、Python2.6でこれに一致するものを返したいと思います。

(#coding:utf-8)

sentence = "Gib mir bitte Erk\u00e4ltung"

keyword = "Erkältung"

re.search(keyword, line)

ヒントはありますか?

4

3 に答える 3

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'
于 2012-11-27T23:39:54.630 に答える
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()
于 2012-11-27T23:47:09.400 に答える
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)
于 2012-11-27T23:48:29.477 に答える