将格式怪异的数字分割成列表



我有一堆数字像这样奇怪地排列在一个文本文档中

8 48 28 39 37 74
7 37 22 1 43 5
19 97 62 78 18 75

我尝试使用:

with open(r'C:UsersHPDesktoptest.txt', 'r') as file:
data = file.read()
tickets = data.split(' ')

但它会奇怪地加上数字本身,看起来像74n7和。有没有可能把它们放在一个列表中,而不包括某些部分的奇怪文本?

我认为你看到的不是/n,而是n,换行符的转义字符。这是因为您要求Python将整个文件作为单个字符串读入,然后仅用空格分隔它。但是,在行之间(例如,在您的示例中在74和7之间),有一个换行符,而不是空格。

你可以使用data.split()没有任何参数有它分割任何重复的空白字符(即空格和换行在其他事情)(见这里的str.split文档):

with open(r'C:UsersHPDesktoptest.txt', 'r') as file:
tickets = file.read().split()

如果你想要整型,使用int和列表推导式强制转换:

with open(r'C:UsersHPDesktoptest.txt', 'r') as file:
tickets = [int(value) for value in file.read().split()]
ans =[]
with open('abc.txt') as f:
lines = f.read().splitlines()
for line in lines:
t = [int(x) for x in line.split(' ')]
ans += t
print(ans)

这是一种方法。我们正在阅读文本,然后摆脱nsplitlines调用。之后,对于每一行,我们根据空格将其分割为段,然后将其转换为整数。

最新更新