rong1667 发表于 2022-3-19 17:13

大佬指点下,我想替换字符串中的链接,替换到一半不会了

本帖最后由 rong1667 于 2022-3-19 17:26 编辑

str1 = "数据库哈进口了https://www.1.com大厦数据库可垃圾啊https://asdas2.com大苏打撒的金\n卡金卡撒开了https://www.3.com \n的金卡金卡撒开了https://www.4.com大苏打撒"
str2 = ['https://a.com','https://b.cn','https://d.cc','https://adsa.com']
想要把链接str1中的链接一次替换成str2中的链接
我用正则找出来str1 的链接 发现是 列表
但是不知道怎么依次替换了

url_ys =re.findall('http?://(?:||[$-_@.&+]|[!*\(\),]|(?:%))+', str_1) #找查出str1 的链接

打印出来是列表形式
如果直接用替换的话 re.sub 发现不能依次替换
没思路了 来求助各位大佬!拜托了 拜托了

平淡最真 发表于 2022-3-19 17:31

for i in range(4):
    str_2=url_ys
print(str_2)

rong1667 发表于 2022-3-19 18:19

平淡最真 发表于 2022-3-19 17:31
for i in range(4):
    str_2=url_ys
print(str_2)

厉害啊哥,解决了
str1 = "数据库哈进口了https://www.1.com大厦数据库可垃圾啊https://asdas2.com大苏打撒的金\n卡金卡撒开了https://www.3.com \n的金卡金卡撒开了https://www.4.com大苏打撒"
str2 = ['https://a.com','https://b.cn','https://d.cc','https://adsa.com']

url_ys = re.findall('http?://(?:||[$-_@.&+]|[!*\(\),]|(?:%))+', str1)

for i in range(len(url_ys)):
    str1 = re.sub(url_ys,str2,str1)

print(str1)

YuanFang0w0 发表于 2022-3-19 18:24

n = 0
for i in url_ys:
    new_str1 = str1.replace(i, str2)
    n += 1
print(new_str1)
思路:正则查找为一个列表,遍历正则查找出来的列表,每一个i对应的是str1中的要替换的字符串,用replace方法,替换str1中对应这个i的字符串为str2列表中对应当前索引值为n的值,并将替换后的str1赋值给new_str1,最后输出new_str1看看结果就知道了。

asd5478 发表于 2022-3-19 18:45

for i in range(4):

        str1=str1.replace(url_ys,str2)

grekevin 发表于 2022-3-19 21:40

import re

str1 = "数据库哈进口了https://www.1.com大厦数据库可垃圾啊https://asdas2.com大苏打撒的金\n卡金卡撒开了https://www.3.com \n的金卡金卡撒开了https://www.4.com大苏打撒"
str2 = ['https://a.com','https://b.cn','https://d.cc','https://adsa.com']
patter = re.compile(r'http?://(?:||[$-_@.&+]|[!*\(\),]|(?:%))+')
url_ys = patter.sub('{}', str1).format(*str2)

print(url_ys)
页: [1]
查看完整版本: 大佬指点下,我想替换字符串中的链接,替换到一半不会了