如何在python中从txt文件生成数字列表?

如何在python中从txt文件生成数字列表?,python,Python,我有一个文本文件,其中包含522103592209034452,0,1,但它们被安排为一列,放在另一列下。我想将这些数字导入python并创建一个列表 L=[52,2,103,592,2090,34452,0,1] 到目前为止,我所做的最好的事情是: txtfile=open('file.txt') L=[] for line in txtfile: L.append(line.rstrip()) print(L) 返回: L=['52','2','103','592','209

我有一个文本文件,其中包含522103592209034452,0,1,但它们被安排为一列,放在另一列下。我想将这些数字导入python并创建一个列表

L=[52,2,103,592,2090,34452,0,1]
到目前为止,我所做的最好的事情是:

txtfile=open('file.txt')

L=[]
for line in txtfile:
    L.append(line.rstrip())

print(L)
返回:

L=['52','2','103','592','2090','34452','0','1']

但是这些数字让我很烦恼


非常感谢您的帮助。

您可以使用以下方法将它们转换为整数:


可以使用以下命令将它们转换为整数:


与Asocia的回答类似,但我会首先定义列表的长度,这可能会稍微加快速度,而且可以说是一种更好的做法:

txtfile=open('file.txt')

L = [0] * len(list(txtfile))

for lineIdx, line in enumerate(txtfile):
    L[lineIdx] = line.rstrip()

print(L)

我希望这会有所帮助。

类似于Asocia的回答,但我会首先定义列表的长度,这可能会稍微提高速度,而且可以说是一种更好的做法:

txtfile=open('file.txt')

L = [0] * len(list(txtfile))

for lineIdx, line in enumerate(txtfile):
    L[lineIdx] = line.rstrip()

print(L)
我希望这有帮助。

您可以使用int将字符串转换为整数,但我还想强调使用with关键字来处理文件

L = []
with open('file.txt') as txtfile:
    for line in txtfile:
        L.append(int(line.rstrip()))
编辑:您也可以在不使用for循环的情况下通过使用map和split进行读取,如下所示:

可以使用int将字符串转换为整数,但我还要强调使用with关键字来处理文件

L = []
with open('file.txt') as txtfile:
    for line in txtfile:
        L.append(int(line.rstrip()))
编辑:您也可以在不使用for循环的情况下通过使用map和split进行读取,如下所示:

请尝试以下操作:

with open('s.txt') as num:
    numbers = num.read()
    n= numbers.split()
    lst = []
    for x in range(len(n)):
        nu = n[x]
        lst.append(int(nu))
    print(lst)
输出:

[1, 2, 3, 3, 4, 5, 6]
请尝试以下操作:

with open('s.txt') as num:
    numbers = num.read()
    n= numbers.split()
    lst = []
    for x in range(len(n)):
        nu = n[x]
        lst.append(int(nu))
    print(lst)
输出:

[1, 2, 3, 3, 4, 5, 6]
试试这个

txtfile=open('file.txt')
L=[]
for line in txtfile:
    L.append(line.rstrip())

a = L[0].split(',')
print sorted(a, key = int)
如果在使用打开时关闭该文件,效果会更好

with open('file.txt') as txtfile:

     b = [x for x in txtfile]
     c = b[0].split(',')
     print sorted(list(map(int, c)))
试试这个

txtfile=open('file.txt')
L=[]
for line in txtfile:
    L.append(line.rstrip())

a = L[0].split(',')
print sorted(a, key = int)
如果在使用打开时关闭该文件,效果会更好

with open('file.txt') as txtfile:

     b = [x for x in txtfile]
     c = b[0].split(',')
     print sorted(list(map(int, c)))

如果要将它们转换为整数,可以使用Python中的intstring函数

txtfile=open('file.txt')

L=[]
for line in txtfile:
    L.append(int(line.rstrip()))

print(L)
根据官方Python文档,如果您想读取列表中文件的所有行,还可以使用listf或f.readlines

yourList = open("filename.txt").readlines()
作为建议:

也可以考虑将数据存储在一个JSON文件上。它的好处是,您可以使用它在用另一种语言编写的应用程序之间进行通信

从:

Python允许您使用流行的数据交换格式JSON JavaScript对象表示法。称为json的标准模块可以采用Python数据层次结构,并将其转换为字符串表示形式;这个过程称为序列化。从字符串表示重构数据称为反序列化。在序列化和反序列化之间,表示对象的字符串可能存储在文件或数据中,或者通过网络连接发送到某台远程计算机


如果要将它们转换为整数,可以使用Python中的intstring函数

txtfile=open('file.txt')

L=[]
for line in txtfile:
    L.append(int(line.rstrip()))

print(L)
根据官方Python文档,如果您想读取列表中文件的所有行,还可以使用listf或f.readlines

yourList = open("filename.txt").readlines()
作为建议:

也可以考虑将数据存储在一个JSON文件上。它的好处是,您可以使用它在用另一种语言编写的应用程序之间进行通信

从:

Python允许您使用流行的数据交换格式JSON JavaScript对象表示法。称为json的标准模块可以采用Python数据层次结构,并将其转换为字符串表示形式;这个过程称为序列化。从字符串表示重构数据称为反序列化。在序列化和反序列化之间,表示对象的字符串可能存储在文件或数据中,或者通过网络连接发送到某台远程计算机


您应该尝试使用列表理解和with关键字,以确保不会忘记关闭文件

with open('test.txt') as f:
    l = [int(line) for line in f]
print(l)

您应该尝试使用列表理解和with关键字,以确保不会忘记关闭文件

with open('test.txt') as f:
    l = [int(line) for line in f]
print(l)
但是“数字周围的”困扰着我:使用intstring,base 返回一个整数值,该数值相当于给定基中的二进制字符串。请检查!更多

但在彼此下面排列成一列 返回L=['52'、'2'、'103'、'592'、'2090'、'34452'、'0'、'1'] 假设: 按问题顺序排列的数字,不带逗号,返回['52'、'2'、'103'、'592'、'2090'、'34452'、'0'、'1'] file.txt:

52
2
103
592
2090
34452
0
1
答复: 想象file.txt有1000个数字。 方法1:使用问题中提到的列表 在打开的'file.txt'中打印[inti.rstrip for i] 内存大小

将所有数字放入列表需要9032字节 建议 方法2:使用发电机 在打开的'file.txt'中为i打印*inti.rstrip 内存大小

将所有1000个数字放入生成器只需80字节

它就像一个列表,但更高效的内存,包含在简单的妄想中

欺骗 使用生成器无法通过索引进行访问 结论 如果您只想将数字保存在内存中,并希望在必要时对其进行迭代,建议使用生成器,因为它的内存效率很高 如果要按索引访问生成器,您始终可以转换生成器 或者像这个listgenerator一样放入一个列表中 希望这有帮助

但是“数字周围的”困扰着我:使用intstring,base 返回一个整数值,该数值相当于给定基中的二进制字符串。请检查!更多

但在彼此下面排列成一列 返回L=['52'、'2'、'103'、'592'、'2090'、'34452'、'0'、'1'] 假设: 按问题顺序排列的数字,不带逗号,返回['52'、'2'、'103'、'592'、'2090'、'34452'、'0'、'1'] file.txt:

52
2
103
592
2090
34452
0
1
答复: 想象file.txt有1000个数字。 方法1:使用问题中提到的列表 在打开的'file.txt'中打印[inti.rstrip for i] 内存大小

将所有数字放入列表需要9032字节 建议 方法2:使用发电机 在打开的'file.txt'中为i打印*inti.rstrip 内存大小

将所有1000个数字放入生成器只需80字节

它就像一个列表,但更高效的内存,包含在简单的妄想中

欺骗 使用生成器无法通过索引进行访问 结论 如果您只想将数字保存在内存中,并希望在必要时对其进行迭代,建议使用生成器,因为它的内存效率很高 如果您希望通过索引访问生成器,则始终可以将生成器转换为类似此listgenerator的列表
希望这有帮助

这不会给其他答案增加任何新的内容;一个文件已经是可编辑的,所以您可以只写mapint,txtfile。int知道从str参数中去掉前导和尾随空格,包括换行符。这不会给其他答案添加任何新内容。您不需要调用read;一个文件已经是可编辑的,所以您可以只写mapint,txtfile。int知道从str参数中去掉包括换行符在内的前导和尾随空格;int本身可以忽略换行符;int本身可以忽略换行符。这是遗留代码,对吗?为什么不能与open一起使用?可以使用open,我也建议使用它。这个答案的编写使得它与原始代码的差异最小。我已经有一段时间没有用python编程了。我知道with的假定优势,据我所知,这是文件自动关闭的事实。所以,在某些情况下,只有open本身才是首选和建议的吗?@oldboy我之前的评论漏掉了一个词。让我重写一下:它可以与open一起使用,我也建议使用它。这个答案是这样写的,它与原始代码的差异最小,我希望这可以消除混淆。。。。因此,仍然有一些情况下,只有开放本身是首选和建议?在90%的情况下,使用with语句要好得多。我想到的唯一例外情况是,您将长期使用该文件,即您将在with语句下编写太多代码,您可以使用f=open。。。这样就不必缩进长代码块。即使在这种情况下,也最好将代码分成更小的部分并编写函数来完成这项工作。所以你仍然可以使用open,它看起来不会难看。这是遗留代码,对吗?为什么不能与open一起使用?可以使用open,我也建议使用它。这个答案的编写使得它与原始代码的差异最小。我已经有一段时间没有用python编程了。我知道with的假定优势,据我所知,这是文件自动关闭的事实。所以,在某些情况下,只有open本身才是首选和建议的吗?@oldboy我之前的评论漏掉了一个词。让我重写一下:它可以与open一起使用,我也建议使用它。这个答案是这样写的,它与原始代码的差异最小,我希望这可以消除混淆。。。。因此,仍然有一些情况下,只有开放本身是首选和建议?在90%的情况下,使用with语句要好得多。我想到的唯一例外情况是,您将长期使用该文件,即您将在with语句下编写太多代码,您可以使用f=open。。。这样就不必缩进长代码块。即使在这种情况下,也最好将代码分成更小的部分并编写函数来完成这项工作。因此,您仍然可以使用open,它不会看起来很难看。