我用漂亮的汤创建了我的代码,使我的url页面循环正常工作,并将我的项目移到了熊猫dataframe中。
问题是,如果我漂亮的soup对象没有获得一个值,我的数组就会被弄乱。
我用regex在漂亮汤里找到我的物品。
在下面这个子句中,我搜索宽度为10%和4个字符的项。
for item in soup.find_all("td", {"width": "10%"}, string=re.compile(r'^\d{4}$')):
不过,我想在正则表达式中添加另一个条件,以获取具有4个字符或包含字符“to”的项
我尝试过以下操作,但它只会产生语法错误。
for item in soup.find_all("td", {"width": "10%"}, string=re.compile(r'^\d{4}$') or string=re.compile(r'^(£)')):
如有任何建议,将不胜感激。
发布于 2019-11-28 14:27:23
您只需将对£
的搜索添加到现有正则表达式中:
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}|£)$')):
发布于 2019-11-28 14:45:48
首先,为什么语法错误:
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)
您的or
不包含在传递的两个参数中,而是在指定2个名为args的参数之间插入它,而逗号通常位于其中。这是错误的因为,
because...
find_all
函数体本身集成所需的or
逻辑,这与参数计算步骤无关。当有疑问的时候,读读文档。以下是美丽汤对the string
argument of find_all
的评价
有字符串的
你可以搜索字符串而不是标签.您可以传入字符串、正则表达式、列表、函数或值True。
因此,我们可以将正则表达式传递给string
,当然您已经在这样做了。所以回到正轨上,我们能做一个正则表达式来检查你描述的条件吗?是!使用分组和|
(或运算符)
(^\d{4}$)|(^.*£.*$)
这个正则表达式将匹配任何这是
从头到尾的
£
字符的内容
下面是它在实际中的一个例子,https://regex101.com/r/cl9KW7/4
https://stackoverflow.com/questions/59096757
复制相似问题