【发布时间】:2018-10-30 09:00:43
【问题描述】:
我正在将 csv 文件读入字典,根据需要转换数据,然后将其写入新的 csv 文件。
原始 csv 文件有一列,其中一些字符串(单词)在双引号中,而其他字符串不在引号中。
像这样:
FOODS;CALS
"PIZZA";600
"PIZZA";600
"BURGERS";500
"PIZZA";600
PASTA;400
"PIZZA";600
SALAD;100
CHICKEN WINGS;300
"PIZZA";600
"PIZZA";600
在我将此列写入输出文件后,它看起来像下面的数组,其中原始 CSV 中的引号中的单词现在有三个引号,而其他的则没有:
FAVORITE_FOOD;VOTES
"""PIZZA""";6
"""BURGERS""";1
PASTA;1
SALAD;1
CHICKEN WINGS;1
我需要删除引号,所以我的最终 csv 看起来像这样:
FAVORITE_FOOD;VOTES
PIZZA;6
BURGERS;1
PASTA;1
SALAD;1
CHICKEN WINGS;1
这是我在文件中的读取方式:
with open(input_data_txt, "r") as file:
# This enables skipping the header line.
skipped = islice(file, 1, None)
for i, line in enumerate(skipped, 2):
try:
food, cals = line.split(';')
except ValueError:
pass
我是这样写的:
with open(food_txt, 'w') as myfile:
wr = csv.writer(myfile, delimiter=';')
for i in final_array:
wr.writerow(i)
【问题讨论】:
-
你能说明你是如何读取输入和写入输出的吗?例如,您是否在一种情况下使用
csv模块,但在另一种情况下不使用? -
@JonClements 添加到我的答案中,我是如何读取和写入文件的。
-
是否有任何理由删除引号...任何可以导入分号分隔文件的明智系统都不会介意这些,并将
"s 识别为分隔符所以可以也删除那些... -
最后一个
"PIZZA"600实际上是你所拥有的 - 例如:这是一个格式错误的行......我是否正确假设你正在做的是计算“FAVORITE_FOOD”中每个值的出现次数" 列 - 这就是您的输出,但您的帖子中没有任何代码表明您正在尝试这样做? -
我回滚了您的最新编辑。请不要添加“SOLVED”或类似名称;一个接受的答案直接明确地将您的问题标记为已解决。如果您想添加自己的答案,当然欢迎您。 (如果您想重新利用它,编辑历史记录包含问题文本的所有先前版本。)
标签: python arrays csv quotation-marks