实际上,我正在使用以下代码测试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;之前)。 我怎样才能做到这一点?
答案 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,而不是使用正则表达式。