使用来自csv模块的writerow写入第一个之后的列?

2024-09-30 08:20:29 发布

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

我是python新手,正在开发一个实用程序来准备一些数据,以便在R中进行分析。到目前为止,该实用程序正在读取两个csv文件,解析tld和sld的url,然后从转置的列表将它们写入csv。然后我需要将csv文件的其他列从“colrdr”直接复制到阅读器中,如第2-6列。我首先尝试了一些直接的解决方案,只是用colrdr写,就像我以前从MasterList写的一样,但是那不起作用(看起来colrdr列根本就没有被写。)在阅读了更多的文档之后,我还尝试在创建writer对象时使用append模式来附加复制的列,但那也没用。在

以下是代码的相关部分:

这里是我将数据解析为TLD/sld的地方

# Create a List for future frequency distribution
SLDList = list()
TLDList = list()
MasterList = [SLDList, TLDList]
for fl in infiles:
    with open(fl, 'r') as csvin:
        reader = csv.reader (csvin, delimiter = ',')
        reader.next()
        for row in reader:
            SLDList.append(gettld(row[urlcolumn]))
            TLDList.append(psl.get_public_suffix(row[urlcolumn]))
# Create a List of other columns of infiles
    with open(fl, 'r') as csvin:
        reader = csv.reader (csvin, delimiter = ',')
        colrdr.append(zip(*(list(reader))))

这里我创建了几个列表,我使用zip将其转换为列,我将在代码的第二部分中编写这些列表。在

这是我写的部分,我还没有真正弄明白

^{pr2}$

第一部分很好。第二部分没有做我认为它应该做的,不幸的是它甚至不会覆盖前两个文件,就好像它只是被解释器忽略了,我不太明白为什么。在

任何帮助都将不胜感激,谢谢!在

编辑:我不能给出实际的示例,但是输入的csvfile是来自不同来源的文件,它们都具有相同的格式

URL,注册器,主机,ASN

输出应该是一个文件,它合并了所有其他文件并具有格式

TLD、SLD、注册商、主机、ASN


Tags: 文件csv数据实用程序列表forlistreader
1条回答
网友
1楼 · 发布于 2024-09-30 08:20:29
newrows = list()
for fl in infiles:
    with open(fl, 'rb') as csvin:
        reader = csv.reader(csvin, delimiter=',')
        reader.next() # skip header
        for row in reader:
            sld = gettld(row[urlcolumn])
            tld = psl.get_public_suffix(row[urlcolumn])
            newrows.append([sld, tld] + row[1:]) # row[1:] is everything but the first

with open(outfile, 'wb') as csvout:
    wtr = csv.writer(csvout, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
    wtr.writerow(["TLD", "SLD", "Registrar", "Host", "ASN"]) # write header
    wtr.writerows(newrows)

相关问题 更多 >

    热门问题