Python从文本文件中拆分数字

Python从文本文件中拆分数字,python,python-3.x,Python,Python 3.x,我有一个文本文件,trial.txt(文件中仅包含3个数字9 23 4),并希望在每个空格处拆分它们。 我需要输出:['9'],['23'],['4'] import re fhandle = open('trial.txt') fread = fhandle.read() new_list = [] print(fread) for num in fread: num_split = num.split(' ') new_list.append(num_split) pr

我有一个文本文件,trial.txt(文件中仅包含3个数字9 23 4),并希望在每个空格处拆分它们。 我需要输出:
['9']
['23']
['4']

import re

fhandle = open('trial.txt')
fread = fhandle.read()
new_list = []
print(fread)

for num in fread:
    num_split = num.split(' ')
    new_list.append(num_split)

print(new_list)
我达到的输出是:

基本上每个数字都被分割(即23被分割为
['2']
['3']
,而不是
['23']

我还尝试使用正则表达式,
num\u split=num.split('\\s+')
但是输出结果与上面显示的相同

你知道为什么吗。
谢谢

欢迎来到StackOverflow

您的代码仅在输入为多行时有效,例如:

9
23
4
而不是
9234
(单行)。因此,它将遍历每个字符


如果您仍然希望将输入保留到一行,则不需要for循环。您可以简单地使用
new\u list=num.split(“”)
。否则,您的代码应该可以用于多行输入。

这是由for循环
fread
引起的。因为
fread
是第4行中分配的字符串(
fread=fhandle.read()
),循环字符串将导致Python循环遍历字符串的每个字符,在您的情况下,
'9 23 4'
将变成
['9',''2','3',''4']

相反,您可以这样做:

with open('trial.txt') as f:
    fread = f.read()
print(fread)

new_list = fread.split()
print(new_list)

它应该分别输出
'9 23 4'
['9',23',4']

看起来您有时有双空格。您可以执行以下操作:

import re

fhandle = open('trial.txt')
fread = fhandle.read()
new_list = []
print(fread)

for num in fread:
    num_split = findall(r'\s?(s*\S+)', num.rstrip())
    new_list.append(num_split)

print(new_list)
正则表达式详细信息:

  • \s?-1或0(由于?量词)空格
  • (\s*\s+)-捕获组#1匹配
  • \s*-零或更多(由于*量词)空白
  • \S+-1或更多(由于+量词)非空白符号

您的输入是一行。谢谢。了解循环问题。但是我要求输出为['9']、['23']、['4']而不是['9'、['23']、['4']。这样我就可以索引特定的值并将其拖出。例如new_list[1]=23您的意思是像2d数组一样吗?如果是,那么您可以简单地在fread.split()中使用
new_list=[[num]for num]