在python正则表达式中使用unicode字符的正确方法是什么

时间:2013-09-25 09:21:06

标签: python regex unicode utf-8

在使用Python 2.7抓取某些文档的过程中,我遇到了一些恼人的页面分隔符,我决定删除它们。分隔符使用一些时髦的字符。我已经问过一个问题here如何让这些字符显示他们的utf-8代码。使用了两个非ASCII字符:'\xc2\xad''\x0c'。现在,我只需要删除这些字符,以及一些空格和页码。

Elsewhere在SO上,我看到unicode字符与正则表达式一起使用,但它是一种奇怪的格式,我没有这些字符,例如'\u00ab'。此外,它们都不使用ASCII以及非ASCII字符。最后,python文档对正则表达式中的unicode主题非常清楚......有关标志的事情......我不知道。有人可以帮忙吗?

这是我当前的用法,它没有做我想要的:

re.sub('\\xc2\\xad\s\d+\s\\xc2\\xad\s\\x0c', '', my_str)

2 个答案:

答案 0 :(得分:2)

您可以删除所需的所有内容,而不是寻找特定的不需要的字符:

re.sub('[^\\s!-~]', '', my_str)

这会抛弃所有字符:

  • 空格(空格,制表符,换行符等)
  • 可打印的“普通”ascii字符(!是第一个可打印的字符,~是最后的十进制字符128)

如果需要,您可以包含更多字符 - 只需调整字符类。

答案 1 :(得分:0)

我也有同样的问题,我知道这不是很有效,但就我而言还是有效的

 result = re.sub(r"\\" ,",x,x",result)
 result = re.sub(r",x,xu00ad" ,"",result)
 result = re.sub(r",x,xu" ,"\\u",result)