【问题标题】:How to eliminate strangely inserted quotes from a csv in Python如何在 Python 中从 csv 中消除奇怪插入的引号
【发布时间】:2018-02-14 00:59:09
【问题描述】:

我有一个 Python 中引用不一致的列表,我正在尝试消除它们。如果 csv 文件中每行只有一组双引号,则类似下面的内容可以正常工作,但如果有多组(例如第四行(标题后的第三行数据)),则会被丢弃

我尝试了许多不同的方法,但我似乎总是以不正确的方式组合元素。

示例 csv:

First,Nickname,Last,Sport
Bill,Bats,Smith,Baseball
Tom,Kicks,Johnson,Soccer
"John,"Footy",Jacobsen,Football"
Mike,"Mikey",Jones,Basketball

我的代码:

import csv
with open('fake.csv', mode='r', encoding = 'utf-8') as infile:
    reader = csv.reader(infile)
    for line in reader:
     if len(line) <4:
        for i in range(0,len(line)):
         line[i].strip('"')
         line[i].replace('"', '')
     print(line)
     print(line[0] + line[2])

期望的输出:

['First', 'Nickname', 'Last', 'Sport']
FirstLast
['Bill', 'Bats', 'Smith', 'Baseball']
BillSmith
['Tom', 'Kicks', 'Johnson', 'Soccer']
TomJohnson
['John','Footy', 'Jacobsen', 'Football']
JohnJacobsen
['Mike', 'Mikey', 'Jones', 'Basketball']
MikeJones

我的输出:

['First', 'Nickname', 'Last', 'Sport']
FirstLast
['Bill', 'Bats', 'Smith', 'Baseball']
BillSmith
['Tom', 'Kicks', 'Johnson', 'Soccer']
TomJohnson
['John,Footy"', 'Jacobsen', 'Football"']
John,Footy"Football"
['Mike', 'Mikey', 'Jones', 'Basketball']
MikeJones

任何帮助将不胜感激

【问题讨论】:

  • Python 中的字符串是不可变的。如果有的话,你应该做line[i]=line[i].strip('"') 和replace 一样。

标签: python csv


【解决方案1】:

读者会期望引号字符将包含您的分隔符的条目换行,因此它按预期工作。如果您的输入包含不平衡或不准确的引用,如本例所示,一种选择是告诉读者根本不要特别对待引用:

reader = csv.reader(infile, quoting=csv.QUOTE_NONE)

然后您必须自己处理引用,因此如果您的输入被一致引用,这不是最佳选择。

【讨论】:

  • 谢谢!这正是我想要的。引号不应该在那里,它只是脏数据,一旦使用这种方法分隔字符串,它们很容易被消除。
猜你喜欢
  • 2020-08-19
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
  • 2017-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多