Python:使用re.sub进行编码问题

时间:2014-09-14 13:06:19

标签: python encoding

实际上,我正在使用以下代码测试html文件中的一些替换:

text = re.sub(u'<div class="paragraph" style="[^"]+"><span class="font61"><i>Test. </i>55<span class="font16"></span><span style=" letter-spacing:-0.70pt;"> </span></span></div>', u'<div class="paragraph" style="\1"><span class="font61"><i>Test.</i><span class="font16"></span><span style=" letter-spacing:-0.70pt;">55</span></span></div>', text)

不幸的是,我的输出是:

 <div class="paragraph" style=""><span class="font61"><i>Test. </i><span class="font16"></span><span style="
 letter-spacing:-0.70pt;">55</span></span></div>

我收到一个特殊字符,而不是"style=" padding:6.00pt 63.36pt 0.00pt 43.68pt; text-align:justify;"",而这里也无法显示。我该如何解决这个问题?

换句话说: 如果我有类似的东西:

<div class="paragraph" style=" padding:0.00pt 0.00pt 0.00pt 90.24pt; text-align:left;"><span class="font61"><i>Test </i>55<span class="font16"></span><span style=" letter-spacing:-0.70pt;"> </span></span></div>

(重要的是:&lt; / i&gt; + number +&lt; span class =),我想将数字移到最后一个间隙(此处,在&lt; / span&gt;之前)。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

re.sub()正在按照它所说的去做。

假设您在问题中正确输入了替换字符串,那么&#34;特殊字符&#34; "\x01"在您的替换字符串中(re.sub()的第二个参数):

u'<div class="paragraph" style="\x01">.........'

尝试将替换字符串更改为:

u'<div class="paragraph" style="padding:6.00pt 63.36pt 0.00pt 43.68pt; text-align:justify;"><span class="font61"><i>Test.</i><span class="font16"></span><span style=" letter-spacing:-0.70pt;">55</span></span></div>'

但是,您最好使用像BeautifulSoup这样的库来帮助您解析和处理HTML,而不是使用正则表达式。