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