查找文件中每一行的最后一个元素(数字)(Python)

时间:2016-03-25 21:02:07

标签: python python-3.x

我正在读取文本文件,我需要找到每行的最后一个元素(数字)。我不明白为什么这个代码不起作用,因为我在常规字符串上尝试过,但它似乎不适用于这种情况。

f = open("file.txt", "r")
result = 0

for line in f:
    string = str(f.read())
    if string[-1:].isdigit() == True:
        result = int(string[-1:])
    else:
        result = 40

print(result)
f.close()

文件file.txt仅包含

81 First line32

所以代码应打印出2作为结果,但我只得到40,因为第一个条件永远不会变为真。我做错了什么?

3 个答案:

答案 0 :(得分:4)

这一行是无关紧要的:

string = str(f.read())

您不需要从文件中读取数据,并且实际上会通过这样做来移动文件指针,从而导致各种问题。你已经用这个阅读了:

for line in f:

因此,你想要的是:

for line in f:
    if line[-1:].isdigit() == True:
        result = int(line[-1:])
    else:
        result = 40

这是explained in the documentation

答案 1 :(得分:1)

你有一个f.read()太多了。这就是你所需要的:

f = open("file.txt", "r")
result = 0

for line in f:
    if line[-1:].isdigit():
        result = int(line[-1:])
    else:
        result = 40

print(result)
f.close()

if string[-1:].isdigit() == True:也可以替换为if line[-1:].isdigit(): 您可能还希望使用line.strip()来删除新行,否则比较将失败。

f = open("file.txt", "r")
result = 0

for line in f:
    l = line.strip()
    if l[-1:].isdigit():
        result = int(l[-1:])
    else:
        result = 40

print(result)
f.close()

答案 2 :(得分:0)

问题是该行中的最后一个字符是行尾字符。使用.strip()删除它(它也会删除多余的空格)。

with open("file.txt", "r") as f:
  for line in f:
    lastchar = line.strip()[-1]
    if lastchar.isdigit():
      result = int(lastchar)  
    else:
      result = 40        
    print(result)

按照您在单行文件中提出的要求打印2

81 First line32

它也适用于多行,打印每行的结果。

相关问题