2013-06-17 3 views
1

Когда я использую, например,Unicode для оригинального символа в Python

unicode_string = u"Austro\u002dHungarian_gulden" 
unicode_string.encode("ascii", "ignore") 

Затем он даст этот вывод: 'Austro-Hungarian_gulden'

Но я использую в текстовый файл, который содержит набор данных, как показано ниже:

Austria\u002dHungary Austro\u002dHungarian_gulden 
Cocos_\u0028Keeling\u0029_Islands Australian_dollar 
El_Salvador Col\u00f3n_\u0028currency\u0029 
Faroe_Islands Faroese_kr\u00f3na 
Georgia_\u0028country\u0029 Georgian_lari 

И я должен обрабатывать эти данные с использованием регулярных выражений в Python, поэтому я создал сценарий, как показано ниже, но это не работает для замены Unicode с соответствующими символами в строке.

Аналогично

'\u002d' has appropriate character '-' 
'\u0028' has appropriate character '(' 
'\u0029' has appropriate character ')' 

Скрипт для обработки текстовых файлов:

import re 
import collections 

def extract(): 
    filename = raw_input("Enter file Name:") 
    in_file = file(filename,"r") 
    out_file = file("Attribute.txt","w+") 
    for line in in_file: 
     values = line.split("\t") 
     if values[1]: 
      str1 = "" 
      for list in values[1]: 
       list = re.sub("[^\Da-z0-9A-Z()]","",list) 
       list = list.replace('_',' ') 
       out_file.write(list) 
       str1 += list 
      out_file.write(" ") 
     if values[2]: 
      str2 = "" 
      for list in values[2]: 
       list = re.sub("[^\Da-z0-9A-Z\n]"," ",list) 
       list = list.replace('"','') 
       list = list.replace('_',' ') 
       out_file.write(list) 
       str2 += list 
     s1 = str1.lstrip() 
     s1 = str1.rstrip() 
     s2 = str2.lstrip() 
     s2 = str2.rstrip() 
     print s1+s2 

Ожидаемого выхода для данных данных:

Austria-Hungary Austro-Hungarian gulden 
Cocos (Keeling) Islands Australian dollar 
El Salvador Coln (currency) 
FaroeIslands Faroese krna 
Georgia (country) Georgian lari 

Как я могу это сделать?

ответ

1

Преобразование ввода в Юникод с использованием decode("unicode_escape"), затем encode() выход в кодировку по вашему выбору.

>>> r"Austro\u002dHungarian_gulden".decode("unicode_escape") 
u'Austro-Hungarian_gulden'