如果我们只知道字符串的一部分,如何使用 readfile 查找字符串?

How to find string with readfile if we know only a part of the string?

如果我只知道字符串的一部分,如何在文本文件中找到字符串?比如我只知道".someserver.com"

但文件中的整个文本如下所示:

"hostname1.expedite.someserver.com"

所以重点是通过只知道它的一部分来找到整个名字。

部分文件内容:

{"attributes": {"meta_data": {"created_at":1614882362.179626, "created_by": "admin"}, "site": "AF002"}, hostname:"hostname1.expedite.someserver.com",

假设您的数据如下:

{"attributes": "xyz", "hostname": ":hostname1.expedite.someserver.com"}
{"attributes": "xyz", "hostname": ":hostname1.expedite.another.com"}
{"attributes": "xyz", "hostname": ":hostname1.expedite.server.com"}
{"attributes": "xyz", "hostname": ":hostname1.expedite.we.com"}
{"attributes": "xyz", "hostname": ":hostname1.expedite.dont.com"}
{"attributes": "xyz", "hostname": ":hostname1.expedite.care.com"}

我们可以:

import ast

check = ".someserver.com"

with open("string.txt", "r") as f:
    line = f.readline()
    while line:
        if check in line:
            print(dict(ast.literal_eval(line))["hostname"])
        line = f.readline()

这会打印我们:

:hostname1.expedite.someserver.com

假设数据如下:

[{"attributes": "xyz", "hostname": ":hostname1.expedite.someserver.com"}, {"attributes": "xyz", "hostname": ":hostname1.expedite.another.com"}, {"attributes": "xyz", "hostname": ":hostname1.expedite.server.com"}, {"attributes": "xyz", "hostname": ":hostname1.expedite.we.com"}, {"attributes": "xyz", "hostname": ":hostname1.expedite.dont.com"}, {"attributes": "xyz", "hostname": ":hostname1.expedite.care.com"}]

然后我们可以:

import json

check = ".someserver.com"

data = json.load(open("string2.txt", "r"))
for d in data:
    if check in d["hostname"]:
        print(d["hostname"])

这给了我们:

:hostname1.expedite.someserver.com

假设您的源是一个包含大量主机名的文件 sample.txt,最简单的方法是使用正则表达式“hostname.someserver.com”,其中通配符 () 是主机名和 someserver.com 示例之前的任何内容。

import re

f = open("sample.txt", "r")
textfile = f.read()
x = re.findall("hostname.*someserver.com", textfile)
print(x)