歌者文明清理员 发表于 2023-4-4 19:05:48

按正则表达式替换

如题
但似乎并没有 re.replace() 函数

part = html.tostring(tree, encoding='unicode')
pat = re.compile('<.*?>')
print(replace(pattern=pat, string=part))

isdkz 发表于 2023-4-4 19:07:24

正则表达式替换是用re.sub

sfqxx 发表于 2023-4-4 19:14:24

{:10_256:}{:10_256:}您可以使用 re.sub() 函数按照正则表达式来替换字符串中的内容。下面是一个修改后的代码示例:

import re
from lxml import html

tree = html.fromstring("<p>Hello, <b>world!</b></p>")
part = html.tostring(tree, encoding='unicode')
pat = re.compile('<.*?>')

# 使用 re.sub 替换所有匹配到的标签
result = re.sub(pat, '', part)

print(result) # 输出 "Hello, world!"
在上述代码中,我们将 <.*?> 匹配模式传递给 re.compile() 函数,并将其存储在变量 pat 中。然后,我们将 part 变量中的 HTML 代码传递给 re.sub() 函数。该函数将在 part 中找到所有匹配 pat 的文本,并将其用空字符串进行替换。

最终输出的结果是 Hello, world!,其中所有的 HTML 标签已经被移除了。

isdkz 发表于 2023-4-4 19:14:27

Python re 模块没有 re.replace() 函数。你应该使用 re.sub() 函数来实现按正则表达式替换。以下是如何使用 re.sub() 的示例:

import re
from lxml import html

# ... 你的其他代码 ...

part = html.tostring(tree, encoding='unicode')
pat = re.compile('<.*?>')
result = re.sub(pat, '', part)
print(result)

在这个例子中,re.sub() 函数的第一个参数是一个已编译的正则表达式模式,

第二个参数是用于替换匹配到的模式的字符串(在这里是空字符串),第三个参数是需要进行替换操作的原始字符串。
页: [1]
查看完整版本: 按正则表达式替换