我是 python 新手,正在开发一个实用程序来准备一些数据以在 R 中进行分析。到目前为止,该实用程序正在读取两个 csv 文件,解析 TLD 和 SLD 的 url,然后将它们从转置列表。然后,我需要将 csv 文件的其他列从“colrdr”直接复制到阅读器中,作为第 2 - 6 列。我首先尝试了一些直接解决方案,只是从 colrdr 中写入,就像我之前从 MasterList 中写入一样,但是不起作用(似乎 colrdr 列根本没有被写入。)在阅读了更多文档后,我还尝试在创建用于附加复制列的编写器对象时使用附加模式,但这也不起作用。
以下是代码的相关部分:
这里是我将数据解析为 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 将其转换为列,我将在代码的第二部分中编写这些列表。
这是我正在写的部分,我还没有真正弄清楚
with open(outfile, 'wb') as csvout:
wtr = csv.writer (csvout, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL)
for row in zip(*MasterList):
wtr.writerow(row)
with open(outfile, 'a') as csvout:
wtr = csv.writer (csvout, delimiter=',',quotechar='|', quoting=csv.QUOTE_MINIMAL)
for row in colrdr:
wtr.writerow(row)
第一部分工作正常。第二部分没有做我认为应该做的事情,不幸的是它甚至不会覆盖前两个文件,就好像它只是被解释器忽略了,我不太明白为什么。
如有任何帮助,我们将不胜感激,谢谢!
编辑:我无法提供实际示例,但输入 csv 文件是来自不同来源的文件,并且都具有以下格式
URL、注册商、主机、ASN
输出应该是一个文件,它结合了所有其他文件并具有以下格式
TLD、SLD、注册商、主机、ASN
最佳答案
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)
关于python - 使用 csv 模块中的 writerow 从第一列开始写入列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26835957/