在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()
来去除无关字符,这不会解释数字之间可能存在的空白。@Matts='3.5 5.3 6.0'
产生['3.5','5.3','6.0']
。。还是我遗漏了什么?你遗漏了他的文件是用逗号分隔的。@Matt谢谢。。让我说明一下(通过更新或删除我的答案),这不会解释数字之间可能存在的空白。@Matts='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”)
得到的答案与@JoelCornettint(“1”)
的答案相同谢谢你,我没有意识到这一点。