在Python中无法删除文本文件空白

在Python中无法删除文本文件空白,python,io,numpy,text-files,Python,Io,Numpy,Text Files,我有一个按以下方式排序的文本文件: 1,1,1, 1,1,1, 1,1,1, 我的Python脚本将文本文件中的每一行作为字符串读取,根据逗号进行定界,然后将其转换为十进制数字进行绘图和分析。我想创建一个由以下合并行组成的数组: [1,1,1 1,1,1 1,1,1] 我曾尝试使用numpy的vstack方法,但似乎文本文件中有一个我无法消除的空白 >>> [735019.6277, 0.0, 1.0178, 3.0, -2.104] [735019.6278, 0.

我有一个按以下方式排序的文本文件:

1,1,1,
1,1,1,
1,1,1,
我的Python脚本将文本文件中的每一行作为字符串读取,根据逗号进行定界,然后将其转换为十进制数字进行绘图和分析。我想创建一个由以下合并行组成的数组:

[1,1,1
 1,1,1
 1,1,1]
我曾尝试使用numpy的vstack方法,但似乎文本文件中有一个我无法消除的空白

>>> 
[735019.6277, 0.0, 1.0178, 3.0, -2.104]
[735019.6278, 0.0, 15.361, 3.0, -2.078]
[735019.628, 0.0, 29.579, 3.0, -2.0682]
[]
由于这个空间,我无法将每一行合并到一个数组中

代码如下:

from numpy import *
from scipy import *

file = open("results_test.txt", 'r')
line = file.readline()
data = line.split(',')
data[-1] = 0
table = data
x = 0
while (x < len(table)):
    table[x] = float(table[x])
    x = x+1
del(table[-1])
print table

while line:
    line = file.readline()
    data = line.split(',')
    data[-1] = 0
    x = 0
    while (x < len(data)):
        data[x] = float(data[x])
        x = x+1
    del(data[-1])
    print data
    table = vstack((table,data))

file.close()
从numpy导入*
从scipy导入*
文件=打开(“results_test.txt”,“r”)
line=file.readline()
数据=行。拆分(',')
数据[-1]=0
表=数据
x=0
而(x
以下是错误:

Traceback (most recent call last):
  File "C:\Python27\read_txt.py", line 26, in <module>
    table = vstack((table,data))
  File "C:\Python27\lib\site-packages\numpy\core\shape_base.py", line 226, in vstack
    return _nx.concatenate(map(atleast_2d,tup),0)
ValueError: array dimensions must agree except for d_0
回溯(最近一次呼叫最后一次):
文件“C:\Python27\read_txt.py”,第26行,在
表=vstack((表,数据))
文件“C:\Python27\lib\site packages\numpy\core\shape\u base.py”,第226行,在vstack中
返回_nx.concatenate(映射(至少为_2d,tup),0)
ValueError:数组维度必须一致,d_0除外

关于这个空格是什么以及如何去掉它以便我可以使用vstack方法的任何想法?

要删除您读取的数据中的额外空白,只需对每行执行以下操作:

data = [x.strip() for x in line.split(',')]

要删除所读取数据中的额外空白,只需对每行执行以下操作:

data = [x.strip() for x in line.split(',')]

这是while循环容易出错的一个例子。尽量避开它们

首先检查行是否为空(
,而行
),然后读取新行(
line=file.readline()
)。这使得支票毫无用处


相反,对文件中的行使用
,并删除
line=file.readline()
行。

这是while循环容易出错的一个示例。尽量避开它们

首先检查行是否为空(
,而行
),然后读取新行(
line=file.readline()
)。这使得支票毫无用处

相反,请对文件中的行使用
,并删除
line=file.readline()
行。

尝试以下操作:

data = []
for line in file:
    data.extend(int(x) for x in line.split(',') if not x.isspace())
试试这个:

data = []
for line in file:
    data.extend(int(x) for x in line.split(',') if not x.isspace())

正如我在上面的评论中提到的,使用)来清理数据。换衣服

data = line.split(',')

你可能还想考虑使用这个结构来打开你的文件,它的优点是它会在你完成文件时为你关闭文件,并且在发生异常的时候。

with open("results_test.txt") as file:
    line = file.readline()
      ...

正如我在上面的评论中提到的,使用)来清理数据。换衣服

data = line.split(',')

你可能还想考虑使用这个结构来打开你的文件,它的优点是它会在你完成文件时为你关闭文件,并且在发生异常的时候。

with open("results_test.txt") as file:
    line = file.readline()
      ...


也许你可以使用
strip()
来去除无关字符,也许你可以使用
strip()
来去除无关字符,这不会解释数字之间可能存在的空白。@Matt
s='3.5 5.3 6.0'
产生
['3.5','5.3','6.0']
。。还是我遗漏了什么?你遗漏了他的文件是用逗号分隔的。@Matt谢谢。。让我说明一下(通过更新或删除我的答案),这不会解释数字之间可能存在的空白。@Matt
s='3.5.3 6.0'
产生
['3.5','5.3','6.0']
。。还是我遗漏了什么?你遗漏了他的文件是用逗号分隔的。@Matt谢谢。。让我说明一下(通过更新或删除我的答案)
对于文件中的行
对于文件中的行更好。readlines()
,因为它一次只读取一行,而不必一次读取整个文件并将其存储在内存中。@Matt:是的,我会更改它!我的主要观点是,不要使用while循环。谢谢朱诺和马特!这完全成功了!我绞尽脑汁试图用strip()和其他方法去除神秘的空白。现在来了解我刚才所做的:p.
对于文件中的行
对于文件中的行。readlines()
更好,因为它一次只读取一行,而不必一次读取整个文件并将其存储在内存中。@Matt:是的,我会更改它!我的主要观点是,不要使用while循环。谢谢朱诺和马特!这完全成功了!我绞尽脑汁试图用strip()和其他方法去除神秘的空白。现在要理解我刚才所做的:p.为什么需要对将转换为
int()
的字符串执行
strip()
操作
int(“1”)
产生与
int(“1”)
相同的答案@JoelCornett谢谢,我不知道。为什么需要对将转换为
int()
的字符串执行
strip()
操作
int(“1”)
得到的答案与@JoelCornett
int(“1”)
的答案相同谢谢你,我没有意识到这一点。