gpt4 book ai didi

python - 从指定字母到长度不同的行中的指定字母切片变量

转载 作者:太空宇宙 更新时间:2023-11-04 03:13:00 25 4
gpt4 key购买 nike

该网站的新手,如果格式不正确,我深表歉意。

所以我在文件中搜索包含

的行

Server[x] ip.ip.ip.ip response=235ms accepted....

其中 x 可以是大于或等于 0 的任何数字,然后将该信息存储在名为 line 的变量中.

然后我将此内容打印到 tkinter GUI 及其方式为窗口提供了太多信息。

为了解决这个问题,我想我会用 return line[15:30] 来分割信息。在函数中,但我想要关闭这些行的信息并不总是介于 15 和 30 之间。

为了解决这个问题,我尝试用

做一个循环

return line[cnt1:cnt2]

已检查 cnt1cnt2循环直到cnt1满足“S”和cnt2满足接受的“a”。

问题是我是 Python 的新手,我无法让循​​环工作。

def serverlist(count):
try:
with open("file.txt", "r") as f:
searchlines = f.readlines()
if 'f' in locals():
for i, line in enumerate(reversed(searchlines)):
cnt = 90
if "Server["+str(count)+"]" in line:
if line[cnt] == "t":
cnt += 1
return line[29:cnt]
except WindowsError as fileerror:
print(fileerror)

我做了一个reversed在行阅读中,因为我正在寻找的行在文本文件中每隔几分钟就会重复一遍又一遍。

本来想从底部开始扫描,到server[0]就停止了但是这个循环对我也不起作用。

我放弃了,开始运行 serverlist(count)并指定我正在寻找的服务器编号,而不是仅仅运行 serverlist() .

希望当我了解我的原始循环的问题时,我可以解决这个问题。

这里的最终目标:

file.txt 有多行

<timestamp/date> Server[x] ip.ip.ip.ip response=<time> accepted <unneeded garbage>

我只想剪切 Server[x]以及该行的响应时间,并使用变量将其显示在其他地方。

该行的范围可以是 Server[0]Server[999]并且每隔几分钟检查一次相同的响应时间,因此我需要避免重复并且只获取日志底部的最新条目。

很抱歉,这太冗长且令人困惑。


编辑:

这是我一直认为应该起作用但不起作用的方法:

def serverlist():
ips = []
cnt = 0
with open("file.txt", "r") as f:
for line in reversed(f.readlines()):
while cnt >= 0:
if "Server["+str(cnt)+"]" in line:
ips.append(line.split()) # split on spaces
cnt += 1
return ips

我的测试日志文件有服务器 [4] 到服务器 [0]。我认为上面将从文件底部读取,打印服务器 [4] 行,然后是服务器 [3] 行等,并在它达到 0 时停止。理论上这会阻止它读取文件中的每一行(运行速度更快)并且它只会给我最新的数据。但是当我用 while cnt >=0 运行它时它陷入循环并永远运行。如果我使用任何其他值(如 1 或 2)运行它,那么它会返回一个空白列表 [] .我想我误解了这是如何工作的。

最佳答案

这是我的第一种方法:

def serverlist(count):
with open("file.txt", "r") as f:
for line in f.readlines():
if "Server[" + str(count) + "]" in line:
return line.split()[1] # split on spaces
return False

print serverlist(30)
# ip.ip.ip.ip

print serverlist(";-)")
# False

您可以更改 line.split()[1] 中的索引以获取该行的特定空格分隔字符串。


编辑:当然,只需删除 if 条件即可获取所有 ip:

def serverlist():
ips = []
with open("file.txt", "r") as f:
for line in f.readlines():
if line.strip().startswith("Server["):
ips.append(line.split()[1]) # split on spaces
return ips

关于python - 从指定字母到长度不同的行中的指定字母切片变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37356504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com