2012-11-27 57 views
3

我有一個包含大量句子的數據文件,像這樣編碼:比較統一交涉符號

「吉布MIR BITTE的Erk \ u00e4ltung」

我也有一個包含大量關鍵詞的數據文件,像這樣編碼:

「Erkältung」

我想搜索在句子的關鍵詞,然後將它們寫入到一個文件,在「Erkältung」格式。

我將如何轉換\ u00e4到無需做:

與string.replace( '\ u00e4', 'A')

更確切地說,我想有這個返回匹配在Python 2.6:

(#coding:UTF-8)

sentence = "Gib mir bitte Erk\u00e4ltung" 

keyword = "Erkältung" 

re.search(keyword, line) 

任何提示?

+0

如果你需要做的是靜態文本字符串搜索,'在sentence'關鍵字通常是更好選擇比正則表達式。 –

回答

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' 
+0

這適用於打印出來,但似乎沒有使re.search工作。如:首先執行sentence.decode('unicode_escape'),然後re.search(關鍵字,句子)不會導致匹配。 –

+0

're'有一些你可以提供的編碼指令作爲可能幫助你的參數。儘管如上所述,無論如何,一個簡單的「in」支票可能是更好的選擇。 –

+0

不幸的是,實際的正則表達式比這個例子複雜得多,因此不允許簡單的檢查。我嘗試過編碼參數,但至今沒有任何成功。 –

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() 
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)