你的角色出现在python的正则表达式中

时间:2013-04-04 22:52:56

标签: python regex

我有一些代码行可以从pdf文件中提取电子邮件地址。

 for page in pdf.pages:
      pdf = page.extractText()
      # print elpdf
      r = re.compile(r'[\w\-][\w\-\.]+@[\w\-][\w\-\.]+[a-zA-Z]{1,4}')
      results = r.findall(pdf)
      Listemail.append(results)
      print(Listemail[0:])
 pdf.stream.close()

不幸的是,在运行代码之后我注意到结果并不完全正常,因为每次找到匹配项时它都会出现'u'字符:

[[u'testuser1@training.local']]
[[u'testuser2@training.local']]

有人知道如何避免出现这个角色?

提前致谢

3 个答案:

答案 0 :(得分:1)

这不是问题。表示字符串前面的u表示它是一个Python unicode字符串。 See this documentation.除非你对他们做任何疯狂的事情,因为某些原因要求你的字符串不是unicode,我不明白这是怎么回事。

答案 1 :(得分:0)

这些是unicode strings,除非你有一些真正的问题,否则你不需要避免它们。

答案 2 :(得分:0)

正如其他人所说,这不是一个错误,而是一个功能。

如果你想要的是非unicode编码的字符串,你可以将文本从unicode转换为更可口的东西。 StackOverflow Q / A涵盖主题:

Convert a Unicode string to a string in Python (containing extra symbols)

我之前遇到过这种情况,在某些用例中,它可能会有问题,因为您会遇到一个方法需要非unicode字符串并中断的问题。 :)

该链接的示例解决方案:

>>> a=u'aaa'
>>> a
u'aaa'
>>> a.encode('ascii','ignore')
'aaa'
>>> a.encode('utf8','ignore')
'aaa'
>>> str(a)
'aaa'
>>>