从多个字符串中提取特定数据

2024-09-27 20:15:35 发布

您现在位置:Python中文网/ 问答频道 /正文

一直在玩这个。还没清理呢。它基本上和nslookup一样。从文本文件中获取一个(或多个)主机名并返回相应的IP地址。你知道吗

def getIPAddresses(file):
    emptyList = []
    someString = ".com"
    with open(file, "r+") as output:
        for line in output:
            emptyList.append(line)
            my_new_list = [x.strip() + someString for x in emptyList]
        return(my_new_list)


def lookup():
    try:
        while True:
            enterSomething = input("Enter something: ")
            if os.path.exists(enterSomething):
                for n in getIPAddresses(enterSomething): 
                    ip_info = socket.getaddrinfo(n, 80)
                    b = list(["nslookup of " + str(n) +"\n"]  + ip_info +(["\n" + "Result of " +str(n)]))
                    values = ''.join(str(v) for v in b)
                    abc = values+ "\n"
                    print()
                    print(abc)
                break
            elif not os.path.exists(enterSomething):
                print("No such file or directory " + str(enterSomething))       
    except(UnicodeError):
        print("")

因此,如果我有一个包含以下内容的文本文件:

www.google
www.espn

它会回来的

nslookup of www.google.com
(<AddressFamily.AF_INET: 2>, 0, 0, '', ('172.217.1.68', 80))(<AddressFamily.AF_INET6: 23>, 0, 0, '', ('2607:f8b0:4006:808::2004', 80, 0, 0))
Result of www.google.com


nslookup of www.espn.com
(<AddressFamily.AF_INET: 2>, 0, 0, '', ('199.181.133.5', 80))
Result of www.espn.com

我的问题是,有没有一种方法可以只提取相应的ip地址,例如172.217.1.682607:f8b0:4006:808::2004作为www.google.com等等?你知道吗


Tags: ofinipcomforwwwgoogleresult
1条回答
网友
1楼 · 发布于 2024-09-27 20:15:35

所以你的代码返回一个元组,元组可以像列表一样被索引。你知道吗

这是我测试的

google = socket.getaddrinfo('www.google.com', 80)
google[0][4]
returns ('74.125.141.104', 80)

从而得到关联的ip地址 做

google[0][4][0]

得到

'74.125.141.104'

相关问题 更多 >

    热门问题