Python string 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

我正在尝试编写一个Python程序,修复用户列表中提供的所有链接的格式

每个链接都应该像https://example.com. 因此,我使用“替换”将错误的零件替换为新零件。然而.replace方法似乎根本不起作用,我很难找到原因

我正在尝试将其设置为一个函数。这是我的代码:

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