有没有一种方法可以在Python中对字符串中的特定序列进行分组?

时间:2019-04-03 21:36:48

标签: python python-3.x

我正在寻找一种方法来自动查找和替换Python中字符串中的一系列数字。我该怎么办?

对于上下文,我正在编写一个程序,该程序将在这里自动执行FreshDirect订购过程。我将BeautifulSoup与Selenium结合使用,制作了一个程序,该程序将自动单击适当的元素以添加或从现货清单中删除。为了让Selenium在列表中找到适合该项目的按钮元素,我正在使用BeautifulSoup抓取唯一的项目ID,然后要将这个唯一的ID放在按钮元素行中以便找到该按钮然后单击。因为我正在分块工作,所以我举一个例子。

import re

s = 'button id="qty_plus_cartline_change_1221067058" type="button"class="quantity_plus " data-component="quantitybox.inc">+<span class="offscreen">Increase the Quantity 1</span></button'

new_string = re.sub('\d', 'new_number', s)

print(new_string)

现在我已经尝试了多种方法,这是最接近的方法。我需要在cartline_change旁边替换该数字。使用此代码,它将替换该数字,但也会替换“增加数量”旁边的1。为了使硒正常工作,它不能代替1。是否有代码可以代替唯一的ID号而不是1?

2 个答案:

答案 0 :(得分:3)

在这里,您走对了!只需将正则表达式从'\ d'更改为'\ d +'并将count添加为1。

s = 'button id="qty_plus_cartline_change_1221067058" type="button"class="quantity_plus " data-component="quantitybox.inc">+<span class="offscreen">Increase the Quantity 1</span></button'
new_string = re.sub('\d+', 'new_number', s,1)
print(new_string)

答案 1 :(得分:2)

首先,使用\d+来匹配整个数字组而不是单个数字。然后,您可以使用count=的{​​{1}}参数来限制一次替换:

re.sub