Python从文本文件中分割数字

时间:2018-11-12 08:29:19

标签: 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)

print(new_list)

我得到的输出是: [['9'], [' '], ['2'], ['3'], [' '], ['4']]

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

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

任何想法为何如此。 谢谢

3 个答案:

答案 0 :(得分:1)

这是由fread循环引起的。由于fread是第4行(fread = fhandle.read())中分配的字符串,因此,对该字符串进行循环将导致Python遍历该字符串的每个字符,在您的情况下,'9 23 4'变为{{ 1}}。

相反,您可以执行以下操作:

['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'

答案 1 :(得分:0)

欢迎使用StackOverflow!

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

9
23
4

代替9 23 4(单行)。因此,它会遍历每个字符。

如果您仍然希望将输入保持在一行,则不需要for循环。您可以简单地使用new_list = num.split(' ')。否则,您的代码应适用于多行输入。

答案 2 :(得分:0)

似乎您有时有两个空格。您可以改为执行以下操作:

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个或更多(由于+量)非空格符号。