Python 如果我只有一部分单词,有没有办法提取字符串中的特定单词?

Python 如果我只有一部分单词,有没有办法提取字符串中的特定单词?,python,Python,我想从一个字符串中提取一个链接,没有诸如“转到”、“打开”、“带我到”之类的问题。。。有没有一种方法可以提取一个单词而不需要空格或标点符号,只要它在这个单词中有域?(例如,我想在包含“Go to google.com”的字符串中找到链接“google.com”。我想在链接中找到.com、.org、.net等。)我希望提取的链接为可变形式。 我使用Python 3.7.3 我在I: 代码是 i = input("What should I do? ") if ".com" in i or

我想从一个字符串中提取一个链接,没有诸如“转到”、“打开”、“带我到”之类的问题。。。有没有一种方法可以提取一个单词而不需要空格或标点符号,只要它在这个单词中有域?(例如,我想在包含“Go to google.com”的字符串中找到链接“google.com”。我想在链接中找到.com、.org、.net等。)我希望提取的链接为可变形式。 我使用Python 3.7.3

我在I:

代码是

i = input("What should I do? ")
    if ".com" in i or ".org" in i: 
        print(i)

我希望输出只包括链接,但它包括
“转到(链接)”
。遗憾的是,我不知道如何将链接输出到变量中。

您需要的是正则表达式。您可以定义要从字符串中提取的正则表达式模式。[Python re][1]库非常丰富,有许多有用的实用程序可供使用。样本如下:

>>> import re
>>> y = "Go to google123.net"
>>> pattern = r'([\w\d]+\.(com|org|net))'
>>> re.findall(pattern, y)
[('google123.net', 'net')]
>>> re.search(pattern, y).group(0)
'google123.net'


  [1]: https://docs.python.org/3/library/re.html

您应该为此任务使用正则表达式。例如:

import re


pattern = "(https?:\/\/)?(www\.)?([a-zA-Z0-9]+(-?[a-zA-Z0-9])*\.)+[\w]{2,}(\/\S*)?"

text_1 = "Go to google.com"
text_2 = "Read more on www.microsoft.com"
text_3 = "available at http://wikipedia.org"

texts = [text_1, text_2, text_3]

for text in texts:
    matched_urls = re.finditer(pattern, text)  # collect all matches
    extracted_urls = [m.group(0) for m in matched_urls]  # extract matched strings 
    print(extracted_urls)
输出将是:

['google.com']
['www.microsoft.com']
['http://wikipedia.org']

像“如”这样的词要求很低。列出您想要处理的所有可能的前缀,我敢打赌从那时起,在程序中编写起来会容易得多。如果您在浏览器中搜索“Python字符串教程”,您会找到比我们在这里管理的更好的解释这一点的参考资料。非常感谢!你解决了我的问题,现在它的工作完美无瑕。