繁体   English   中英

从python中的csv文件数据中删除引号

[英]remove quotes from csv file data in python

我有一个从url导入并放置到数据库中的csv,但是它导入时在名称和id周围加上引号,如要删除它们。 csv文件的原始格式为

"Apple Inc.",113.08,113.07
"Alphabet Inc.",777.61,777.30
"Microsoft Corporation",57.730,57.720

我目前拥有的代码如下。

def csv_new(conn, cursor, filename):
    with open(filename, 'rt') as csv_file:
        csv_data = csv.reader(csv_file)
        for row in csv_data:
            if(not row[0][0].isdigit()):
                continue
            split = [int(x) for x in row[0].split('/')]
            row[0] = datetime.datetime(split[2], split[0],
                                       split[1]).date().isoformat()
            print(row);
            cursor.execute('INSERT INTO `trade_data`.`import_data`'
                           '(date, name, price) VALUES(%s, "%s", %s)',
                           row)
    conn.commit()

最终数据库如下所示

 Name   | Price1| Price 2|
'Apple Inc.' 113.08 113.07
'Alphabet Inc.' 777.61 777.30
'Microsoft Corporation' 57.730 57.720

我希望它看起来像

Name   | Price1| Price 2|
Apple Inc. 113.08 113.07
Alphabet Inc. 777.61 777.30
Microsoft Corporation 57.730 57.720

我尝试在csv.reader(new_data.splitlines(),delimiter =',skipinitialspace = True)中用于行:但是它引发了错误

csv.reader会正确删除引号。 您可能正在查看带引号的文本字符串表示形式,而不是实际的文本。

>>> new_data = '''"Apple Inc.",113.08,113.07
... "Alphabet Inc.",777.61,777.30
... "Microsoft Corporation",57.730,57.720'''
>>> 
>>> import csv
>>> 
>>> for row in csv.reader(new_data.splitlines()):
...     print(','.join(row))
... 
Apple Inc.,113.08,113.07
Alphabet Inc.,777.61,777.30
Microsoft Corporation,57.730,57.720
>>> 

弄清楚了,问题出在tdelaney提到的是,它不是python字符串中的引号,所以我在

cursor.execute('INSERT INTO `trade_data`.`import_data`'
                       '(date, name, price) VALUES(%s, "%s", %s)',
                       row)

到%s而不是“%s”,它解决了问题并删除了多余的引号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM