压制' u'在输出 - Python

时间:2016-06-20 10:14:52

标签: python regex encoding

如何摆脱输出中的这些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

a.encode('ascii', 'ignore')
a.encode('utf-8')
",".join(a)

但他们都没有工作。

预期产出:

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

我正在使用Python 2.7

也有人可以解释一下,为什么我有时会得到\ n而\ n \ n否则甚至是空白?

3 个答案:

答案 0 :(得分:2)

试试这个:

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

你只是告诉你它是一个unicode字符串。

(...,...,)是元组的表示

' - '。join(...)的作用是将...的字符串连接到 -

a [:3]表示“只有”

的前三个元素

(有关python中切片符号的详细解释,请查看此处:https://stackoverflow.com/a/509295/327293

答案 1 :(得分:1)

您的问题不是u。如果要以特定方式格式化结果,则应使用字符串格式化函数。

print '-'.join(a)

答案 2 :(得分:1)

你只是意味着它是unicode。您可以根据需要重新编码。这将起作用,并且还跳过空白值:

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