![](/img/trans.png)
[英]How to print a file line by line in specific interval continuously using python?
[英]how to read a specific line and print a specific position in this line using python
如何从文本文件中读取特定行,该文本文件包含几行具有相同字符“!”的行。 我的目标是找到最后一行并打印位置编号四“ [4]”。
我的file.txt:
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000
1.0000 1.0000 1.0002 0.9879 0.8682 0.6437 -0.0000 -0.0000
.
.
.
.
! T E = -122.1058
.
.
.
! T E = -123.1050
.
.
.
! T E = -125.10584323
我的脚本(不起作用):
import sys, os
import datetime
import time as t
oTE_list = []
oTE = []
with open("file.txt","r") as f:
text = f.readlines()
for line in text:
if line[0] == '!':
oTE_list.append(line[4])
# Change Lists To Number Format
for item in oTE_list:
oTE.append(float(item))
for idx, item in enumerate(oTE_list):
if idx == len(oTE_list) - 1:
print(item)
number5 = (item)
另一方面,我使用bash进行管理:
grep ! file.txt | awk 'END{print $5}'
结果应该是这样的: -125.10584323
谢谢。
它很简单,我不知道您为什么要复杂它。
f = open("file.txt", "r")
lines = [line for line in f.readlines() if line[0]=="!"]
number = float(lines[-1].split()[4])
说明:
f.readlines()
读取所有行f.readlines()
。
lines
是以!
开头的行的列表!
。
lines[-1]
从列表中选择最后一行。
lines[-1].split()
将在最后一行中列出单词。 (在" "
(空格)处分割)
lines[-1].split()[4]
将从单词列表中选择第5个单词。
float(lines[-1].split()[4])
会将单词转换为float。
我认为您在这里寻找的是如何切割和切片琴弦 。 我已经对您上面提供的代码进行了调整,以包括此字符串片段。 查看第一个for循环:-)
def main():
oTE_list = []
oTE = []
with open("file.txt","r") as f:
text = f.readlines()
for line in text:
if line[0] == '!':
equals_index = line.index('=')
# Get everything after the equal and remove extra whitespace
after_equal = line[equals_index+1:].strip()
oTE_list.append(after_equal)
# Change Lists To Number Format
for item in oTE_list:
oTE.append(float(item))
for idx, item in enumerate(oTE_list):
if idx == len(oTE_list) - 1:
print(item)
if __name__ == '__main__':
main()
运行这个我得到结果:
C:\Python35\python.exe C:/Users/Frito/GitSource/help/sample.py
-125.10584323
现在您可能想知道这是如何工作的。 您输入的内容有点困难,因为我知道并没有消除其中所有空格的好方法!
, T
, E
, =
和<number>
字段。 在这种情况下,通过查看您的数据,我选择查找等号,然后仅查看其后的数据。 行equals_index = line.index('=')
查找字符串中等号所在的位置。 该“位置”包括空格。 通过查看字符串的位置24可以看到这一点。例如print(line[24])
。
现在我们可以计算等号在哪里,然后可以得到等号后的所有内容。 在您的示例中,这是您希望打印到屏幕上的数字,带有一些额外的空格。 如果要使用print
命令直接打印字符串“ abc”,它将在abc
之前和之后以三个空格打印。 python中的.strip()
函数删除了这些多余的空格。
当我们结合以上两种方法时,我们可以找到您的号码并仅打印该号码。 我希望这有帮助!
考虑到要打印的行,这甚至更简单
#!/usr/bin/python
#import re
with open("file1.txt") as f:
lines = f.readlines()[-1]
lastline = lines.split()[-1]
print lastline
期望的产出
bash-4.1$ ./file1.py
-125.10584323
如果您希望所有以
"!"
开头的行 定位到最后一个索引值,然后可以在下面使用...。
#!/usr/bin/python
import re
with open("file1.txt") as f:
lines = f.readlines()
for line in lines:
if "!" in line:
line = line.split()[-1]
print line
输出值将为beow ..
bash-4.1$ ./file1_dup.py
-122.1058
-123.1050
-125.10584323
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.