【问题标题】:how to read a string and integer separately from a file in python如何从python中的文件中分别读取字符串和整数
【发布时间】:2025-12-26 12:05:10
【问题描述】:

我无法读取文件。我有一个小文本文件,就像下面的一个。我的程序应该读取第一个字符串并存储其余整数并按升序对它们进行排序。我必须用python编写我的程序,但我无法弄清楚。如何分隔我的字符串和整数。然后最后我输出了带有名称的结果并以整数排序。

!/usr/bin/env/python

import sys
import os


def main():
   h = []
   
  infile = open(sys.argv[1], "rb")
   
  str = infile.readline()
   
  for line in infile:
            
     for nbr in line.split():
                    
        h.append(nbr)
    

 infile.close()

main()

【问题讨论】:

  • 也发布您的代码尝试。
  • 您能展示一下您的尝试吗?你能提供一个minimal reproducible example吗?你期望的输出是什么?你的实际输出是什么?你能告诉我们而不是告诉我们吗?这个问题目前很广泛。
  • 这是整个文件,还是只是其中的一部分?
  • 是的,我可以发布我的代码,我能够分隔字符串和整数。现在必须按优先级队列顺序对整数进行排序。这是我的代码
  • #!/usr/bin/env/python import sys import os def heapsort(iterable): file = [] for value in iterable: heappush(h,value) return[heappop(h) for i in range(len(file))] def main(): h = [] infile = open(sys.argv[1], "rb") str = infile.readline() for line in infile: for nbr in line .split(): h.append(nbr) print str print h infile.close() main()

标签: python string integer


【解决方案1】:

你可以使用正则表达式和heapq:

import re
import heapq

f = [i.strip('\n') for i in open('filename.txt')]
new_f = [re.findall("(?<=\d{1,}\.\s)[a-zA-Z0-9]+", i) for i in f]
def heapqueue_sort(numbers):
    l = []
    heapq.heapify(l)
    for i in numbers:
        heapq.heappush(l, i)
    return [heapq.heappop(l) for i in range(len(l))]
final_data = [new_f[0]].extend(heapqueue_sort(map(int, new_f[1:]))]
print(final_data)

【讨论】:

  • 你将值发送到哪里?请解释一下
  • @Gloria_2015 我不确定你的意思。你指的是函数调用吗?
  • 是的,你能解释一下 int 和 new_f 的 map 在这个方法中是如何工作的
  • @Gloria_2015 map 采用特定函数,在本例中为整数函数,并将其应用于列表中的每个元素。 new_f 在文件中搜索小数点后的整数值。