【问题标题】:How to extract the first and last value from a txt file, in python?如何在python中从txt文件中提取第一个和最后一个值?
【发布时间】:2020-11-09 10:30:44
【问题描述】:

我有一个这样的txt文件:

2,5,25,6
3,5,78,6,
5,23,24,85
6,4,79,9
69,23,12,51

我应该只提取两个值,即第一行 2 中的第一个值和最后一行 69 中的第一个值。 我写的程序如下:

with open("C:\values.txt", "r") as fp:
    lines = fp.readlines()
for i in range(0, len(lines)):
    print(lines[i])

但我只能打印 txt 文件中存在的所有行。

【问题讨论】:

  • 注意,基本上没有充分的理由使用readlines,它是一个遗物。文件对象是迭代器,你的代码可能只是for line in fp: print(line)
  • 并且在能够访问for循环中的每一行之后;那么下一步是什么?您可以开始查看 lines[i] 类型并注意到它是一个字符串,而不是(还)一个数字列表。那么如何将此字符串转换为数字列表呢?最后,访问第一行的第一个数字和最后一行的最后一个数字。
  • 作为我需要的输出:2, 69
  • 未提及,但如果文件大小超过可用内存,两个答案都将不起作用,只是想指出这一点,如果是这种情况,也许这会有所帮助stackoverflow.com/questions/7167008/…

标签: python txt


【解决方案1】:

通过iostream打开文件后,您可以使用readlines()将整个数据传输到列表中。并且可以通过列表的索引得到你想要的值。

with open("value.txt", "r") as fp:
    lines = fp.readlines()
    first = lines[0].split(',')[0]
    end = lines[-1].split(',')[0]

    print(first, end)

【讨论】:

    【解决方案2】:

    与.read()一起使用索引:

    with open(r"C:\values.txt", "r") as fp:
      txt = fp.read().strip()
      first_val = int(txt.split("\n")[0].split(",")[0])
      last_val = int(txt.split("\n")[-1].split(",")[0])
    

    【讨论】:

      【解决方案3】:

      类似下面的东西

      with open("values.txt", "r") as fp:
          lines = [l.strip() for l in fp.readlines()]
          first_and_last = [lines[0], lines[-1]]
          for l in first_and_last:
              print(l.split(',')[0])
      

      输出

      2
      69
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-03
        • 1970-01-01
        • 1970-01-01
        • 2019-03-09
        • 2021-11-08
        • 2017-05-04
        • 1970-01-01
        • 2020-01-12
        相关资源
        最近更新 更多