2016-06-20 5 views
0

uを出力からどのように取り除くことができますか?出力 - Pythonで 'u'を表示しない

正規表現:

Tregex1 = "1?\W*([2-9][0-8][0-9])\W*([2-9][0-9]{2})\W*([0-9]{4})(\se?x?t?(\d*))?"

コード:

for a in re.findall(Tregex1,text_value,re.IGNORECASE): 
     print a 

出力:

(u'877', u'638', u'7848', u'\n', u'') 
(u'650', u'627', u'1000', u'\n', u'') 
(u'650', u'627', u'1001', u'\nE', u'') 
(u'312', u'273', u'4100', u'', u'') 

私はこれら&は、いくつかの類似links

01を続いて使用してみました
a.encode('ascii', 'ignore') 
a.encode('utf-8') 
",".join(a) 

しかし、いずれも機能していません。

予想される出力:私は誰かが説明することができます。また

のPython 2.7を使用しています

877-638-7848 
650-627-1000 
650-627-1001 
312-273-4100 

は、なぜ私は時々\ N \数nEながら、そうでない場合、あるいは空白取得していますか?

+0

あなたは 'uのを心配する必要はありません'接頭辞、それは文字列がUnicodeであることだけを伝えます。 –

+0

@downvoter理由お願いしますか? – x0v

答えて

2

はこれを試します文字列。

(...、...、)タプルの表現

何である ' - '。(...)に参加して...の文字列を接続している -

[は:3]

「の唯一の最初の3つの要素」を意味(Pythonでスライス表記の良い説明のためにここを見て:https://stackoverflow.com/a/509295/327293)を

1

問題はuではありません。特定の方法で結果の書式を設定する場合は、文字列書式機能を使用する必要があります。

print '-'.join(a) 
1

uはユニコードであることを意味します。あなたは望むようにそれをコード化することができます。これは動作し、またブランク値をスキップします:uはちょうどそれがユニコードだということを示しています

for a in re.findall(Tregex1,text_value,re.IGNORECASE): 
    print '-'.join(a[:3]) 

a = (u'877', u'638', u'7848', u'\n', u'') 
print "-".join([x.strip() for x in a if x.strip() != u""]) 

877-638-7848

+0

文字列の比較に 'is'を使用しないでください。 –

+0

が更新されました。ありがとう。 – Dan

+1

@ダンフォギーの答えは、4番目のインデックスを確認するのが面倒ではないので、より効率的だと思います – x0v

関連する問題