这个正则表达式与这个列表推导式一起做什么?



我正在看一些代码,想知道下面的补丁做什么。我对前两行代码特别感兴趣。

non_printable_re = re.compile(ur'(?:%s)' % '|'.join(
[ chr(i) for i in range(1,31) if i != 10 ]))
obj_txt = lobj.get_text()
obj_txt = non_printable_re.sub( '', obj_txt)
obj_txt = obj_txt.strip()

我知道regex符号本身代表什么,但我很难弄清楚它与列表理解相结合的作用…

这段代码的目标是删除不可打印的字符

看在split to part:

  1. 首先,我们创建一个"非打印"字符列表;(ASCII表的前31个字母
print([ chr(i) for i in range(1,31) if i != 10 ])
['x01', 'x02', 'x03', 'x04', 'x05', 'x06', 'x07', 'x08', 't', 'x0b', 'x0c', 'r', 'x0e', 'x0f', 'x10', 'x11', 'x12', 'x13', 'x14', 'x15', 'x16', 'x17', 'x18', 'x19', 'x1a', 'x1b', 'x1c', 'x1d', 'x1e']
  1. 然后创建一个匹配这些字符的正则表达式
'(?:x01|x02|x03|x04|x05|x06|x07|x08|t|x0b|x0c|r|x0e|x0f|x10|x11|x12|x13|x14|x15|x16|x17|x18|x19|x1a|x1b|x1c|x1d|x1e)'

然后将这些字符替换为"(移除它)

最新更新