我在构造正则表达式时遇到问题
I have a problem with construct regular expression
我有一个数据框,其中一列中的行如下所示:
<title>Some text</title>
<selftext>Some text</selftext>
以上为一行一列。
问题是不是每一行都像这样。我必须实施看起来不像这样的行已被删除。
我尝试使用下面的代码:
pattern = "<title>[a-zA-Z0-9]</title>\n\n<selftext>[a-zA-Z0-9]</selftext>"
for row in df.column_name:
if row == pattern:
print(row)
我没有打印任何行,尽管我应该打印。
我对模式错误的第一个想法是您设置了一个范围,但只允许恰好一个字符。使用此选项允许标题和自文本标签中的任何内容 至少 一个字符。
pattern = "<title>[a-zA-Z0-9]+</title>\n\n<selftext>[a-zA-Z0-9]+</selftext>"
此外,您没有调用实际的正则表达式模式。您刚刚进行了字符串比较。因此,除非内容完全是 [a-zA-Z0-9]
,否则它不会匹配。
这样使用:
import re
pattern = "<title>[a-zA-Z0-9]+</title>\n\n<selftext>[a-zA-Z0-9]+</selftext>"
for row in df.column_name:
if re.match(pattern, row):
print(row)
编辑:除非您还想通过完全遵循正确的字符集和数字范围来过滤内容,否则我建议使模式更加广泛。基本上 XML 允许标签内除标签 (<
、>
) 之外的所有内容。所以你可以一直匹配到下一个开始标签。当你这样做时,你也可以允许空标签,因为这些也可以出现在 XML.
中
import re
pattern = "<title>[^<]*</title>\n\n<selftext>[^<]*</selftext>"
for row in df.column_name:
if re.match(pattern, row):
print(row)
我有一个数据框,其中一列中的行如下所示:
<title>Some text</title>
<selftext>Some text</selftext>
以上为一行一列。 问题是不是每一行都像这样。我必须实施看起来不像这样的行已被删除。
我尝试使用下面的代码:
pattern = "<title>[a-zA-Z0-9]</title>\n\n<selftext>[a-zA-Z0-9]</selftext>"
for row in df.column_name:
if row == pattern:
print(row)
我没有打印任何行,尽管我应该打印。
我对模式错误的第一个想法是您设置了一个范围,但只允许恰好一个字符。使用此选项允许标题和自文本标签中的任何内容 至少 一个字符。
pattern = "<title>[a-zA-Z0-9]+</title>\n\n<selftext>[a-zA-Z0-9]+</selftext>"
此外,您没有调用实际的正则表达式模式。您刚刚进行了字符串比较。因此,除非内容完全是 [a-zA-Z0-9]
,否则它不会匹配。
这样使用:
import re
pattern = "<title>[a-zA-Z0-9]+</title>\n\n<selftext>[a-zA-Z0-9]+</selftext>"
for row in df.column_name:
if re.match(pattern, row):
print(row)
编辑:除非您还想通过完全遵循正确的字符集和数字范围来过滤内容,否则我建议使模式更加广泛。基本上 XML 允许标签内除标签 (<
、>
) 之外的所有内容。所以你可以一直匹配到下一个开始标签。当你这样做时,你也可以允许空标签,因为这些也可以出现在 XML.
import re
pattern = "<title>[^<]*</title>\n\n<selftext>[^<]*</selftext>"
for row in df.column_name:
if re.match(pattern, row):
print(row)