如何摆脱输出中的这些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否则甚至是空白?
答案 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