按列将单个列表写入csv

2024-09-27 19:29:51 发布

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

下面的代码搜索列表中给定的单词,匹配后逐行将该行写入csv

我试图找到一个解决方案,这样列表中的第一项不是按行写,而是第1列,第2项到第2列,依此类推

parm_list = ["electricalAntennaTilt ","iuantSectorId ", "eUtranCellFDDId "]
os.remove("Parm.csv")
#keyword = input("Enter keyword here: ")
with open('Parm.csv', 'w', newline='\n', encoding='utf-8') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(["eNB", "Parameter", "Value"])

for filename in os.listdir(directory):
    for i in parm_list:
        if filename.endswith(".txt"):
            with open(filename, "r", encoding="UTF-8") as file:
                for line in file:
                    if re.search(i, line):
                        with open('Parm.csv', 'a', newline='\n', encoding='utf-8') as csvfile:
                            writer = csv.writer(csvfile)
                            writer.writerow([filename] + [line])


    else:
        continue

电流输出:

315655.txt electricalAntennaTilt                30

315655.txt iuantSectorId                        315655_1_4

预期产出:

315655.txt electricalAntennaTilt                30 iuantSectorId                        315655_1_4

Tags: csvcsvfileintxtforaswithline
3条回答

为什么每次都要关闭文件?除此之外,请尝试在内部循环中迭代参数(parm_list):

parm_list = ["electricalAntennaTilt ","iuantSectorId ", "eUtranCellFDDId "]
os.remove("Parm.csv")
#keyword = input("Enter keyword here: ")
with open('Parm.csv', 'w', newline='\n', encoding='utf-8') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=["eNB"] + parm_list) 
    writer.writeheader()

    for filename in os.listdir(directory):
        if filename.endswith(".txt"):
            with open(filename, "r", encoding="UTF-8") as file:
                data = {'eNB': filename}
                for line in file:
                    if data.keys() > set(parm_list):
                        break
                    for pattern in parm_list:
                        if pattern not in data and re.search(pattern, line):
                            data[pattern] = line.strip()

                writer.writerow(data)                         

我看不到你的txt文件,所以只是猜测一下:

import csv
import os
import re

directory = "~/Desktop" # put here a path to your directory

parm_list = ["electricalAntennaTilt ","iuantSectorId ", "eUtranCellFDDId "]
os.remove("Parm.csv")
#keyword = input("Enter keyword here: ")
with open("Parm.csv", "w", newline="\n", encoding="utf-8") as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(["eNB", "Parameter", "Value"])

for filename in os.listdir(directory):
    if filename.endswith(".txt"):
        row = [filename] # <    - make a row for every file
        for i in parm_list:
            with open(filename, "r", encoding="UTF-8") as file:
                for line in file:
                    if re.search(i, line):
                        row.append(line) # <   - fill the row

         # write the row to the csv file
         with open("Parm.csv", "a", newline="\n", encoding="utf-8") as csvfile:
            writer = csv.writer(csvfile)
            writer.writerow(row)

不确定这是否是你想要的,但是改变

with open('Parm.csv', 'a', newline='\n', encoding='utf-8') as csvfile:

with open('Parm.csv', 'a', newline='', encoding='utf-8') as csvfile:

在第二个循环中

相关问题 更多 >

    热门问题