Python连接两行并用n创建csv

2024-04-26 04:08:22 发布

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

#!c:/users/jon/python
#Python 2.7.6

import csv
from string import maketrans

intab = "()-/"
outtab = "    "
tab0 = maketrans(intab, outtab)

plist1 = []
x1 = ''

with open('o:/p1.csv', 'rb') as f1:
    csvfile1 = csv.reader(f1)
    next(f1)
    for row in csvfile1:

        row[0] = row[0].translate(tab0).replace(' ','')
        row[1] = row[1].translate(tab0).replace(' ','')
        x1 = row[0] + '-' + row[1]

        plist1.append(x1)
f1.close()

print str(x1)
#   prints correctly:
#   AAA1111111-BBB2222222

newcsv1 = csv.writer(open('newcsv1.csv', 'wb'))
for row in plist1:
    newcsv1.writerow(row)

#   creates a csv file that looks like below:
#   A,A,A,1,1,1,1,1,1,1,-,B,B,B,2,2,2,2,2,2,2

我希望有人能给我指出正确的方向。。。在

我想创建一个变量,它将行[0]和行[1]之间用“-”连接起来,并创建一个只包含新变量的新csv文件。在

我使用的csv文件如下所示:

^{pr2}$

我希望新的csv文件只包含一个单元格/值,如下所示:

AAA1111111-BBB2222222

Tags: 文件csvimportforopenrowf1x1
3条回答

为了补充Padraic的答案——你正在传递一个字符串,它也是一个iterable。看到这个:

>>> s = "abcd"
>>> for i in s:
...   print i,
... 
a b c d

我想你已经从一个简单的问题中做出了一些复杂的代码。以下是我要做的,基于问题,而不是你的代码:

from string import maketrans

tab = maketrans("()-/", "    ")
with open("o:/p1.csv", "rb") as fi:
    with open("output.csv", "wb") as fo:
        fi.readline() # skip first line
        for line in fi:
            line = line.translate(tab).replace(" ", "")
            newvals = line.split(",")
            newrow = newvals[0] + '-' + newvals[1] + '\n'
            fo.write(newrow)

我不熟悉csvfile模块,因此可能有一些改进,但我认为您的代码应该像这样简单,如果不是更简单的话。在

newcsv1 = csv.writer(open('newcsv1.csv', 'wb'))
for row in plist1:
    newcsv1.writerow([row]) # put row inside a list

writerow需要一个iterable,因此iterating over plist1row是一个字符串,当写入文件时,writer会迭代并拆分为单个字符。在

如果plist是一个包含单个元素的列表,只需使用:

^{pr2}$

这将把AAA1111111-BBB2222222写入文件。在

使用您的代码:

with open("newcsv1.csv") as f:
    next(f)
    csvfile1 = csv.reader(f)
    for row in csvfile1:
        print row
        row[0] = row[0].translate(tab0).replace(' ','')
        row[1] = row[1].translate(tab0).replace(' ','')
        x1 = row[0] + '-' + row[1]
        row[2] = row[2].translate(tab0).replace(' ','')
        row[3] = row[3].translate(tab0).replace(' ','')
        x2 = row[2] + '-' + row[3]
        plist1.append([x1]) # append inside a list
        plist1.append([x2])
newcsv1 = csv.writer(open('newcsv1.csv', 'wb'))
newcsv1.writerows(plist1) # write all rows from the list

相关问题 更多 >