无法将输出逐行保存到csv中

问题描述 投票:-1回答:1

我不知道为什么,但是我的代码将我的输出保存到一个csv文件中,而不是逐行而是每个单元格中的字符。

import csv

with open(r'/Users/gfidarov/Desktop/crosscheckmmm/Sheet 2-Table 1.csv') as f:
    for line in f:
        if line.strip().endswith('"'):
            line = line.strip().strip(';')
            print(line)

import collections
counter = collections.defaultdict(int)
for row in line:
    counter[row[0]] += 1
writer = csv.writer(open("/Users/gfidarov/Desktop/crosscheckmmm/Sheet 2-Table 3.csv", 'w'))
for row in line:
    if counter[row[-1]]:
        writer.writerow(row)

这是我的数据。我在PyCharm输出中看到的那个。

► Принять в работу | 20.09.2019 |  | "
► арихив  | 23.03.2019 |  | "
► Архив. | 10.09.2019 |  | "
► ПОЗВОНИТЬ после 12.00 | 03.07.2019 |  | "
► Архив,лечение дома | 02.03.2019 |  | "
► Новое событие | 31.05.2019 |  | "
► Нуралдин, как обстоит ситуация с клиентом? Что сейчас происходит? | 17.09.2019 |  | "
► архив | 06.04.2019 |  | "

但是我的代码像这样保存它

►

П
р
и
н
я
т
ь

в

р
а
б
о
т
у

|

1
7
.
0
9
.
2
0
1
9

|


|

""""

我什至不知道为什么会那样做。有什么可能的解决方案。

python csv
1个回答
0
投票

问题是在您的最后一个for循环中,

for row in line:
    if counter[row[-1]]:
        writer.writerow(row)

您迭代分配给line变量的最后一个字符串。相反,您应该做的是将修改后的行保存在数组中并对其进行迭代:

lines = [] # create array
with open(r'/Users/gfidarov/Desktop/crosscheckmmm/Sheet 2-Table 1.csv') as f:
    for line in f:
        if line.strip().endswith('"'):
            line = line.strip().strip(';')
            lines.append(line)  # append stripped line to array
            print(line)

import collections
counter = collections.defaultdict(int)
for row in lines:  # iterate over lines array
    counter[row[0]] += 1
writer = csv.writer(open("/Users/gfidarov/Desktop/crosscheckmmm/Sheet 2-Table 3.csv", 'w'))
for row in lines:  # iterate over lines array
    if counter[row[-1]]:
        writer.writerow(row)
© www.soinside.com 2019 - 2024. All rights reserved.