使用Python将各个字段名中的数据放置在CSV文件中

使用Python将各个字段名中的数据放置在CSV文件中,python,csv,python-3.x,split,Python,Csv,Python 3.x,Split,我正在写一个脚本,提取txt文件中的数据并写入CSV文件…我可以分割数据,但无法将其放置在正确的字段名中 文件如下所示: xxxx = "qqqqqqq 5466 78455" yyyy = "wwww" zzzz = "hhhh" mmmm = "aaaa" xxxx = "qqqqqqq 8795 32133" yyyy = "wwww" zzzz = "hhhh" mmmm = "aaaa" xxxx = "qqqqqqq 5995 21384" zzzz = "hhhh" mmmm

我正在写一个脚本,提取txt文件中的数据并写入CSV文件…我可以分割数据,但无法将其放置在正确的字段名中

文件如下所示:

xxxx = "qqqqqqq  5466 78455" yyyy = "wwww" zzzz = "hhhh" mmmm = "aaaa"
xxxx = "qqqqqqq  8795 32133" yyyy = "wwww" zzzz = "hhhh" mmmm = "aaaa"
xxxx = "qqqqqqq  5995 21384" zzzz = "hhhh" mmmm = "aaaa"
xxxx = "qqqqqqq  6546 12346" yyyy = "wwww" zzzz = "hhhh" mmmm = "aaaa"
xxxx = "qqqqqqq  7895 13246" yyyy = "wwww" zzzz = "hhhh" mmmm = "aaaa"
xxxx = "qqqqqqq 64654 94343" yyyy = "wwww" mmmm = "aaaa
我使用的代码是:

import csv
import re


fileread = str(input("enter the name of the file :"))
fread = open(fileread, "r")

resultFile = open("out3.csv",'w')
wr = csv.writer(resultFile)


try:

    for lines in fread:
        if "attack" in lines:
            regexs = re.findall(r'\"(.+?)\"',lines)
            wr.writerow(regexs)

finally:
    fread.close()
    resultFile.close()
结果如下:

      xxxx             yyyy   zzzz   mmmm

qqqqqqq  5466 78455    wwww   hhhh   aaaa
qqqqqqq  8795 32133    wwww   hhhh   aaaa
qqqqqqq  5995 21384    hhhh   aaaa
qqqqqqq  6546 12346    wwww   hhhh   aaaa
qqqqqqq  7895 13246    wwww   hhhh   aaaa
qqqqqqq  4654 94343    wwww   aaaa
但我需要的输出是:

      xxxx             yyyy   zzzz   mmmm

qqqqqqq  5466 78455    wwww   hhhh   aaaa
qqqqqqq  8795 32133    wwww   hhhh   aaaa
qqqqqqq  5995 21384           hhhh   aaaa
qqqqqqq  6546 12346    wwww   hhhh   aaaa
qqqqqqq  7895 13246    wwww   hhhh   aaaa
qqqqqqq  4654 94343    wwww          aaaa
我不知道如何放置它。。。。。 请帮忙!!!帮我做这个


提前感谢……

问题是正则表达式甚至不尝试匹配字段名,它只匹配引号中的所有内容

如果您编写的正则表达式与字段名匹配,那么您将得到字段名。例如:

re.findall(r'(\S+?)\s*=\s*\"(.+?)\"',line)
这将匹配一组非空白字符,后跟任何空白、一个
=
、任何空白和一组引号中的任何内容。由于有两个捕获组,每个输出元素将是一个2元组,如:

('xxxx', 'qqqqqqq  5466 78455')
因此,您可以将2元组列表转换为
dict
,并使用
csv.DictWriter
将字段名与csv卷名匹配