在Python的正则表达式中,我尝试将“ /”替换为“-”,但只能使用大写字母和数字之间的一个:
data["image_cloud"] = re.sub(r"[A-Z]+(/*)[0-9]", "-", data["image_cloud"])
使用此正则表达式,它会选择所有字符,而不仅是“ /”
答案 0 :(得分:0)
您似乎正在使用pandas
,所以请像这样使用str.replace
:
data["image_cloud"] = data["image_cloud"].str.replace(r"([A-Z])/([0-9])", r"\1-\2")
在([A-Z])/([0-9])
中,([A-Z])
是与大写字母匹配的捕获组#1,([0-9])
是捕获数字的捕获组#2,而\1
和\2
是它们在替换模式中的对应反向引用。
注意表示 raw 字符串文字的r
前缀。
答案 1 :(得分:0)
按照您所说的,正确的模式是:
data["image_cloud"] = re.sub(r"(?<=[A-Z])/(?=\d)", "-", data["image_cloud"])
AZ/09 will be replaced by AZ-09
AZ09 will not be replaced
请谨慎使用:
data["image_cloud"] = re.sub(r"(?<=[A-Z])/*(?=\d)", "-", data["image_cloud"])
AZ/09 will be replaced by AZ-09
AZ09 will be replaced by AZ-09 (also)