我不知道为什么,但是我的代码将我的输出保存到一个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
|
|
""""
我什至不知道为什么会那样做。有什么可能的解决方案。
问题是在您的最后一个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)