将一批txt转换为CSV,然后使用python过滤信息[已关闭]

yvt65v4c  于 2023-05-04  发布在  Python
关注(0)|答案(1)|浏览(128)

已关闭,此问题需要details or clarity。目前不接受答复。
**想改善这个问题吗?**通过editing this post添加详细信息并澄清问题。

14小时前关闭
Improve this question
我正在使用数据采集软件对一些文件进行后处理,因此我需要将大量的txt文件转换为csv,然后将csv信息减少到只有几个头和值。
我需要teadd一个文件夹上的所有txt文件,复制到一个csv内的文本分隔列用分号和过滤器的具体行。
下一个是我的脚本,它做了我需要的,但只有:a)将所有txt转换为csv,这就是全部B)过滤第一个CSV文件的数据。
但我需要它一次完成两件事我的代码有什么问题?

import os
import csv
#import pathlib

for path in pathlib.Path("C:\\Users\\EV3105\\Desktop\\bat").glob("*.txt"):
    with path.open() as txtfile, path.with_suffix(".csv").open(mode="w",newline='') as csvfile:
       reader = csv.reader(txtfile, delimiter = '|')
        writer = csv.writer(csvfile)
        for row in reader:
            writer.writerow(row)

def filter_csv(input_file_path, output_file_path):
    lines_to_keep = [4, 5, 23, 24, 25, 26, 27,32, 33]

    with open(input_file_path, 'r') as input_file:
        reader = csv.reader(input_file)
        rows = [row for i, row in enumerate(reader) if i in lines_to_keep]

         # Replace spaces with semicolons
    for i, row in enumerate(rows):
        rows[i] = [cell.replace(' ', ';') for cell in row]

    with open(output_file_path, 'w', newline='') as output_file:
        writer = csv.writer(output_file, delimiter=';')
        writer.writerows(rows)

input_folder = 'C:\\Users\\DR16707\\Desktop\\Piweb_Import'
output_folder = 'C:\\Users\\DR16707\\Desktop\\_importConfig'

# Make sure the output folder exists, create it if it doesn't
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# Loop through all the CSV files in the input folder
for file_name in os.listdir(input_folder):
    if file_name.endswith('.csv'):
        input_path = os.path.join(input_folder, file_name)
        output_path = os.path.join(output_folder, file_name)

        # Filter the CSV file and keep only the specified lines
        filter_csv(input_path, output_path)
6qqygrtg

6qqygrtg1#

如果你想过滤特定的列和行,你可以将文本文件作为pandas Dataframe读取,并使用filter()方法来过滤行和列:

import pandas as pd
import pathlib

for path in pathlib.Path(".").glob("*.txt"):
    df = pd.read_csv(path, delimiter='|')
    df = df.filter(items=['Row_1', 'Row_3'], axis=0)
    df = df.filter(items=['Col_1', 'Col_3'], axis=1)
    df.to_csv(path.with_suffix('.csv'))

相关问题