如何在python中从txt文件生成数字列表?
我有一个文本文件,其中包含522103592209034452,0,1,但它们被安排为一列,放在另一列下。我想将这些数字导入python并创建一个列表如何在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
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,它不会看起来很难看。