如何使用python替换向量数据0中的所有字符( - )

时间:2017-07-31 06:03:06

标签: python python-2.7

您好myfile.dat文件中有3列数据。它们的订购方式如下。

20:40

我想用matplotlib python绘制它们但在此之前我想要替换它们 - 在所有列中字符为0,以便我可以理解它变为零的时间。这时我手动完成,但想以编程方式进行。任何建议将受到高度赞赏。 谢谢

4 个答案:

答案 0 :(得分:1)

你只是在寻找这样的东西吗?

infile = open('test.dat')
outfile = open('clean.dat', 'w')
for line in infile:
    outfile.write(line.replace('--', '0'))

outfile.close()
infile.close()

clean.dat现在有数据' - '替换为' 0'例如:

  234   -642  20.20
  233   -640  20.40
  233.4  0   20.60
  0    -646  20.80
  0    -642  21.00
  234   0    21.20
  342   0    21.40

修改 要打开并覆盖某个文件,您可以执行以下操作:

FILE = 'test.dat

f = open(FILE)
infile =  f.read() #infile is one big string with the whole doc

f.close()
outfile = open(FILE, 'w') #this will OVERWIRTE the original!!
outfile.write(infile.replace('--', '0'))

outfile.close()

答案 1 :(得分:1)

pandas是一个很好的图书馆,可以阅读结构化数据并与matplotlib配合使用 在阅读文件时,您可以指定其他NaN值,这些值很容易替换为.fillna(0),例如:

In []:
import pandas as pd
df = pd.read_csv('myfile.dat', delim_whitespace=True, header=None, na_values=['--']).fillna(0)
df
Out[]:
       0      1     2
0  234.0 -642.0  20.2
1  233.0 -640.0  20.4
2  233.4    0.0  20.6
3    0.0 -646.0  20.8
4    0.0 -642.0  21.0
5  234.0    0.0  21.2
6  342.0    0.0  21.4

In []:
df.plot()
Out[]:

enter image description here

答案 2 :(得分:0)

加载数据文件后,将'--'替换为每列中的0

new_column = [0 if cell=='--' else cell for cell in old_column]

此语句使用conditional operator和生成器表达式[f(x) for x in a_list]

答案 3 :(得分:0)

您可以使用Regular Expressions来匹配您想要的任何序列并替换它:

import re

file_path = './t'
file_out_path = './tt'

# Open the source file
# it will close it automatically at the end of the `with` block
with open(file_path, 'r+') as source:
  content = source.read()
  # match the sequence you want and replace it
  content = re.sub('--', '00', content)
  # You can do with it as you wish, like writing it back to another file
  with open(file_out_path, 'w') as destination:
    destination.write(content)