2017-06-24 10 views
0

'utf-8'でエンコードされたデータを消去しました。 .str.extract()を使用して、私は[(u'text')]から'textの形式で囲まれたテキストを取得しましたが、私のコードはガベージ/ユニコード文字"\u09xx"と同様のリテラルのタイプを登録していません。どうすれば削除できますか?文字間の文字列の抽出と置換

入力:

{"HT" : ["([u'SoccerTips', u'FootballTips'],)", "([u'\u092b\u094c\u091c\u0940', u'FixedMatch', u'CT2017Final'],)"]} 

マイコード:

df1 = df.drop('HT', axis=1).join(
      df.HT 
      .str 
      .split(expand=True) 
      .stack() 
      .reset_index(drop=True, level=1) 
      .rename('HT')   
      ) 

df1['HT'] = df1['HT'].str.extract("u+(\'[^\']*)", expand=False).fillna('') 
df1['HT'] = "#" + df1['HT'] 

出力: -

{"HT" : ["#'SoccerTips" , "#'FootballTips", "#'\u092b\u094c\u091c\u0940", "#'FixedMatch", "#'CT2017Final"]} 

予想される出力: -

{"HT" : ["#SoccerTips" , "#FootballTips", " ", "#FixedMatch", "#CT2017Final"]} 
+0

あなたはアスキー文字を保持したいですか? –

+0

はい、これらのユニコードをasciiに変換する可能性のある方法があれば、それはまったく別の問題です。今のところ、私は単なるUnicode \ uリテラルをすべて削除し、空白で置き換えたいだけです。 – lightyagami96

答えて

0

可能な解決策:

import pandas as pd 

# the input 
df1= {"HT" : ["([u'SoccerTips', u'FootballTips'],)", "([u'\u092b\u094c\u091c\u0940', u'FixedMatch', u'CT2017Final'],)"]} 

# convert to Dataframe 
df1= pd.DataFrame(df1) 

# cleaning 
df1.HT.replace('\(\[|\],\)','', regex=True, inplace=True) 
df1.HT.replace("u'[^\x00-\x7f]*'","", regex=True, inplace=True) 
df1.HT.replace("u'([^\']+)'",'#\\1', regex=True, inplace= True) 
df1.HT= df1.HT.str.split(', ') 

# final result 
df1= {'HT':[j for i in df1.HT for j in i]} 

# output: df1 -> {'HT': ['#SoccerTips', '#FootballTips', '', '#FixedMatch', '#CT2017Final']}