我希望从line
变量
bash-4.1$ cat file1_dup.py
#!/usr/bin/python
with open("file1.txt") as f:
lines = f.readlines()
for line in lines:
if "!" in line:
line = line.split()[-1].strip()
print line
我得到的输出如下..
-122.1058
-123.1050
-125.10584323
我想要打印的结果是
-125.10584323
此外,我得到了一些goghling的提示并得到输出 我希望这一点对我而言似乎有点复杂。
bash-4.1$ cat file2_dup.py
#!/usr/bin/python
def file_read_from_tail(fname,n):
with open(fname) as f:
f=f.read().splitlines()
lines=[x for x in f]
for i in range(len(lines)-n,len(lines)):
line = lines[i].split()[-1]
#line = line.split()[-1]
print line
file_read_from_tail('file1.txt',1)
这对于那些希望如下的人来说......
bash-4.1$ ./file2_dup.py
-125.10584323
PS:我只是为了兴趣而借用这个问题: how to read a specific line and print a specific position in this line using python
答案 0 :(得分:2)
您可以测试新行是否像之前的那样
#!/usr/bin/python
res_line = 0
with open("file1.txt") as f:
lines = f.readlines()
for line in lines:
if "!" in line:
line = float(line.split()[-1].strip())
if res_line > line:
res_line = line
print res_line
答案 1 :(得分:1)
编辑:
您可以使用enumerate()
来获取循环索引的行:
with open("file1.txt", "rt") as f:
lines = f.readlines()
for line, content in enumerate(lines):
# apply your logic to line and/or content here
# by adding ifs to select the lines you want...
print line, content.strip() # do your thing
将输出(仅用于说明,因为我没有在上面的代码中指定任何条件):
0 -122.1058
1 -123.1050
2 -125.10584323
3
或者在listcomp中选择具有条件的特定行 通过使用此代码:
with open("file1.txt", "rt") as f:
lines = f.readlines()
result = [ content.strip() for line, content in enumerate(lines)
if line == len(lines) - 2] # creates a list with
# only the last line
print result[0]
将输出:
-125.10584323
答案 2 :(得分:0)
尝试以下方法:
print [line.split()[-1].strip() for line in lines if '!' in line][-1]
答案 3 :(得分:0)
我看到一个更好的方法是创建一个空列表并附加值来自条件,然后选择你选择的索引并列出输出,这是好的,因为它可以用于你的任何一行你需要选择的内容。
让我假设我是最后一行,然后它可以恢复将值放在打印部分print(lst[-2])
中,这将打印第二行的最后一个索引。
#!/usr/bin/python
file = open('file1.txt', 'r')
lst = list()
for line in file:
if "!" in line:
x= line.split()
lst.append(x[-1])
print(lst[-1])