从文本文件中删除不符合条件的行

2024-05-11 03:33:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下内容的文本文件:

=======数据:00:05:08.627012========

1900-01-01 00:05:08.627012;0;1.16198;10000000.0

1900-01-01 00:05:08.627012;1;1.16232;10000000.0

==========数据:00:05:12.721536========

1900-01-01 00:05:08.627012;0;1.16198;10000000.0

1900-01-01 00:05:12.721536;0;1.16209;1000000.0

1900-01-01 00:05:08.627012;1;1.16232;10000000.0

我正在尝试将它转换为一个csv,其中每个条目在进入自己的单元格后都有一个分号。以下是所需结果的概念。enter image description here

我不想在文本文件中包含带有=符号的行。我目前正在使用以下代码:

txt_file = open('Data/Mkt_data_test.txt', 'r')
lines = txt_file.readlines()
txt_file.close()

header_line = ['Time,', 'Bid/Ask,', 'Price,', 'Volume,']

data_lines = []

for line in lines:
    if '=' not in line:
        time_data = line.split('\n')
        for time in time_data:
            data_lines.append(time+'\n')
            data_lines = [data.replace(';', ',') for data in data_lines]

finished_file = open('mktDataFormat.csv', 'w')
finished_file.writelines(header_line)
finished_file.writelines(data_lines)
finished_file.close()

这样可以正确地写入不包含等号的行,但是在文本文件中有空行的地方有带“=”的行,也只有空行。enter image description here

我怎样才能去掉那些空行?你知道吗


Tags: csv数据intxtforclosedatatime
2条回答

您的问题是您的程序没有跳过空行,因此将空行视为数据。我添加了一个检查(并稍微修改了代码),以确保没有空行。你知道吗

txt_file = open('Data/Mkt_data_test.txt', 'r')
lines = txt_file.readlines()
txt_file.close()

header_line = ['Time,', 'Bid/Ask,', 'Price,', 'Volume,\n']

data_lines = []

for line in lines:
    if '=' not in line and line.strip() != "":
        line = line.replace(';', ',')
        data_lines.append(line)

 finished_file = open('mktDataFormat.csv', 'w')
 finished_file.writelines(header_line)
 finished_file.writelines(data_lines)
 finished_file.close()
for line in lines:
    if '=' not in line:
        time_data = line.split('\n')
        for time in time_data:
            data_lines.append(time+'\n')
        data_lines = [data.replace(';', ',') for data in data_lines]

试试看,告诉我

相关问题 更多 >