带有OR条件的Python正则表达式
我已经用BeautifulSoup创建了我的代码,让我的url页面循环正常工作,并将我的项目移动到panda数据框中 问题是,若我的漂亮的汤对象并没有拾取一个值,那个么我的数组就会乱七八糟 我正在使用正则表达式在BeautifulSoup中查找我的项目 下面是让我感到困惑的子句,我在其中搜索宽度为10%和4个字符的项目带有OR条件的Python正则表达式,python,regex,Python,Regex,我已经用BeautifulSoup创建了我的代码,让我的url页面循环正常工作,并将我的项目移动到panda数据框中 问题是,若我的漂亮的汤对象并没有拾取一个值,那个么我的数组就会乱七八糟 我正在使用正则表达式在BeautifulSoup中查找我的项目 下面是让我感到困惑的子句,我在其中搜索宽度为10%和4个字符的项目 for item in soup.find_all("td", {"width": "10%"}, string=re.compile(r'^\d{4}$')): 但是,我想在
for item in soup.find_all("td", {"width": "10%"}, string=re.compile(r'^\d{4}$')):
但是,我想在正则表达式中添加另一个条件,以拾取具有4个字符或包含字符'>'
我尝试了以下方法,但它只产生语法错误
for item in soup.find_all("td", {"width": "10%"}, string=re.compile(r'^\d{4}$') or string=re.compile(r'^(£)')):
如有任何建议,将不胜感激 您只需在现有正则表达式中添加对
的搜索:
for item in soup.find_all("td", {"width": "10%"}, string=re.compile(r'^(\d{4}|.*£.*)$')):
我假设字符串中可能有除
以外的其他字符,如果不是这样(它只是
),则删除替换的*
部分,即
for item in soup.find_all("td", {"width": "10%"}, string=re.compile(r'^(\d{4}|£)$')):
您只需将搜索
(
添加到现有正则表达式中即可:
for item in soup.find_all("td", {"width": "10%"}, string=re.compile(r'^(\d{4}|.*£.*)$')):
我假设字符串中可能有除
以外的其他字符,如果不是这样(它只是
),则删除替换的*
部分,即
for item in soup.find_all("td", {"width": "10%"}, string=re.compile(r'^(\d{4}|£)$')):
首先,为什么会出现语法错误:
soup.find_all("td", {"width": "10%"}, string=re.compile(r'^\d{4}$') or string=re.compile(r'^(£)'))
你做得很好
func(arg1, arg2, arg3=something or arg3=somethingelse)
您的或
不包含在您要传递的两个参数中,您要在指定两个命名参数之间插入它,逗号通常位于两个命名参数之间。这是错误的,因为
某物
或某物
同时作为同一个参数传递给函数调用通常没有意义,因为find_all
函数体本身合并所需的或逻辑,这与参数求值步骤无关
find\u all
使用字符串,您可以搜索字符串而不是标记。。。可以传入字符串、正则表达式、列表、函数或True值
因此,我们可以将正则表达式传递给字符串,当然您已经在这样做了。那么回到正轨上来,我们可以制作一个正则表达式来检查您描述的条件吗?对使用分组和|
(或运算符)
(^\d{4}$)|(^.*.*.$)
这个正则表达式将匹配任何它是
- 从开始到结束的4位字符
- 或
- 任何包含
字符的内容
下面是一个正在运行的示例首先,为什么会出现语法错误:
soup.find_all("td", {"width": "10%"}, string=re.compile(r'^\d{4}$') or string=re.compile(r'^(£)'))
你做得很好
func(arg1, arg2, arg3=something or arg3=somethingelse)
您的或
不包含在您要传递的两个参数中,您要在指定两个命名参数之间插入它,逗号通常位于两个命名参数之间。这是错误的,因为
Python不支持此语法,因为
将某物
或某物
同时作为同一个参数传递给函数调用通常没有意义,因为
(据我所知)您实际上想做的是让find_all
函数体本身合并所需的或逻辑,这与参数求值步骤无关
如果有疑问,请阅读文档。下面是beautifulsoup对find\u all
使用字符串,您可以搜索字符串而不是标记。。。可以传入字符串、正则表达式、列表、函数或True值
因此,我们可以将正则表达式传递给字符串,当然您已经在这样做了。那么回到正轨上来,我们可以制作一个正则表达式来检查您描述的条件吗?对使用分组和|
(或运算符)
(^\d{4}$)|(^.*.*.$)
这个正则表达式将匹配任何它是
- 从开始到结束的4位字符
- 或
- 任何包含
字符的内容
这里有一个实际的例子