我有一个文本文件,其中包含数字52、2、103、592、2090、34452、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']
但是数字周围的'困扰着我。
感谢您的帮助。
答案 0 :(得分:2)
您应该尝试使用列表理解和“ with”关键字,以确保您不会忘记关闭文件。
with open('test.txt') as f:
l = [int(line) for line in f]
print(l)
答案 1 :(得分:1)
您可以使用int
将它们转换为整数:
txtfile=open('file.txt')
L=[]
for line in txtfile:
L.append(int(line.rstrip()))
txtfile.close()
print(L)
[52, 2, 103, 592, 2090, 34452, 0, 1]
答案 2 :(得分:1)
您可以使用int()
将字符串转换为整数,但是我还要强调使用with
关键字来处理文件。
L = []
with open('file.txt') as txtfile:
for line in txtfile:
L.append(int(line.rstrip()))
编辑:您也可以像这样使用for
和map
,而无需split
循环阅读:
with open('file.txt') as txtfile:
L = list(map(int, txtfile.read().split('\n')))
答案 3 :(得分:0)
类似于Asocia的答案,但我先定义列表的长度(这可能会稍微提高速度,并且可以说是一种更好的做法):
txtfile=open('file.txt')
L = [0] * len(list(txtfile))
for lineIdx, line in enumerate(txtfile):
L[lineIdx] = line.rstrip()
print(L)
我希望这会有所帮助。
答案 4 :(得分:0)
尝试以下操作:
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]
答案 5 :(得分:0)
尝试
txtfile=open('file.txt')
L=[]
for line in txtfile:
L.append(line.rstrip())
a = L[0].split(',')
print sorted(a, key = int)
如果在使用with打开文件时关闭了该文件,那就更好了
with open('file.txt') as txtfile:
b = [x for x in txtfile]
c = b[0].split(',')
print sorted(list(map(int, c)))
答案 6 :(得分:0)
如果要将它们隐藏为Integers,则可以在Python中使用int(string)函数。
<div class="inline-flex">
<button class="bg-gray-300 hover:bg-gray-400 text-gray-800 font-bold py-2 px-4 rounded-l">
Group
</button>
<button class="bg-gray-300 hover:bg-gray-400 text-gray-800 font-bold py-2 px-4 rounded-r">
Filter
</button>
</div>
根据Python的官方文档,如果您想读取列表中文件的所有行,则可以使用一种更简短,更“优雅”的解决方案,也可以使用list(f)或f.readlines()。
txtfile=open('file.txt')
L=[]
for line in txtfile:
L.append(int(line.rstrip()))
print(L)
只是一个建议:
此外,您可能还需要考虑将数据存储在JSON文件中。这样做的好处是,您可以使用它在用另一种语言编写的应用程序之间进行通信。
从docs:
Python允许您使用称为JSON(JavaScript对象表示法)的流行数据交换格式。名为json的标准模块可以获取Python数据层次结构,并将其转换为字符串表示形式;此过程称为序列化。从字符串表示形式重建数据称为反序列化。在序列化和反序列化之间,代表对象的字符串可能已存储在文件或数据中,或者已通过网络连接发送到某个远程机器。
答案 7 :(得分:0)
int(string, base)
返回一个整数值,该整数值等于给定基数中的二进制字符串。检查here!更多
under each other
排列的数字不带逗号,根据问题返回['52','2','103','592','2090','34452','0','1']
file.txt:
52
2
103
592
2090
34452
0
1
print([int(i.rstrip()) for i in open('file.txt')])
内存大小
print(*(int(i.rstrip()) for i in open('file.txt')))
内存大小
将所有1000个数字放入生成器中仅需80个字节。
像列表一样可迭代,但以普通的括号()
print(g[4]) # TypeError: 'generator' object has no attribute '__getitem__'
list(generator)
的列表希望这会有所帮助!