Python string replace()方法似乎不起作用
我正在尝试编写一个Python程序,修复用户列表中提供的所有链接的格式 每个链接都应该像https://example.com. 因此,我使用“替换”将错误的零件替换为新零件。然而.replace方法似乎根本不起作用,我很难找到原因 我正在尝试将其设置为一个函数。这是我的代码:Python string replace()方法似乎不起作用,python,python-3.x,for-loop,methods,replace,Python,Python 3.x,For Loop,Methods,Replace,我正在尝试编写一个Python程序,修复用户列表中提供的所有链接的格式 每个链接都应该像https://example.com. 因此,我使用“替换”将错误的零件替换为新零件。然而.replace方法似乎根本不起作用,我很难找到原因 我正在尝试将其设置为一个函数。这是我的代码: from re import findall def get_urls(): # Gets urls from the provided string urls = input("Stream
from re import findall
def get_urls():
# Gets urls from the provided string
urls = input("Stream urls: ").split(",")
for i, url in enumerate(urls):
urls[i] = findall(r'(https?://[^\s]+)', url)
if "https://www." in urls[i]:
urls[i] = urls[i].replace("https://www.", "https://")
elif "www." in urls[i]:
urls[i] = urls[i].replace("www.", "https://")
elif "http://" in urls[i]:
urls[i] = urls[i].replace("http://", "https://")
return urls
print(get_urls())
输出被打印回我,但链接保持不变。我的代码中似乎没有输入错误或直接语法错误,因为IDE没有报告任何类似的情况
我做错了什么?此代码有几个问题: re.findall返回一个列表,所以https://www. 在URL中[i]和其他两个检查可能总是错误的 您需要再次迭代URL,或者不使用findall。看起来您可以使用startswith或re.match 您正在返回到循环中,这看起来也不像您想要做的
我使用的是从重新导入findall,因此添加了重新。我想应该没有必要。返回URL不应该在循环中。您在处理第一个URL后返回,其余内容不变。您的返回在循环内,因此仅在处理第一个URL后它将返回,并且不会处理任何其他URL,您的意思是在循环外吗?事实上,我是这样做的。这发生在我试图从纯粹的悲伤中猜出正确的组合时……findall在那里,因为我需要在之后检测错误的用户输入。例如,如果一个用户要粘贴4个链接,而其中一个链接不是,我需要确保只有链接可以通过。我根本不知道如何进行过滤,因为任何配置都会导致不同的问题。
def get_urls():
# Gets urls from the provided string
urls = input("Stream urls: ").split(",")
for i, url in enumerate(urls):
if url.startswith("https://www."):
urls[i] = urls[i].replace("https://www.", "https://")
elif url.startswith("www."):
urls[i] = urls[i].replace("www.", "https://")
elif url.startswith("http://"):
urls[i] = urls[i].replace("http://", "https://")
return urls