python - 从 csv 文件中删除货币值(value)列中的引号?

标签 python csv

要从 csv 文件的货币值(value)列中删除引号吗?

我的 CSV:

"   2102"|"LINDOMAR MARTINS DE FREITAS"|"RUA 02 NR.270"|"FORMOSA"|"98130860"|"TIMON"|"MA"|"ADMINISTRATIVO"|"FATURISTA"|"LINDOMAR"|"S"|20130102|20130102|20130102|115.00|"TDC"|"4"|"88792334"|""|""|""

我想要一个值为 115.00 的列不带引号。

L = []
reader = csv.reader(open(infile), csv.QUOTE_NONNUMERIC, delimiter='|', quotechar='"')

for row in reader:
    L.append(tuple(row))

在 Python 列表 L 列中,值为 115.00 的值为 '115 .00 '。我认为该方法是 csv.header 在所有列上加上引号。

最佳答案

您可以只在适当的列上使用 float 。但请注意,由于舍入误差, float 值通常不用于货币值。 Python有专门的Decimal像这样输入,这比纯 float 有优势,值得注意的是:

... Decimal numbers can be represented exactly. In contrast, numbers like 1.1 and 2.2 do not have exact representations in binary floating point. End users typically would not expect 1.1 + 2.2 to display as 3.3000000000000003 as it does with binary floating point.

#!/usr/bin/env python

# consider: from decimal import Decimal
from pprint import pprint
import csv

if __name__ == '__main__':
    L = []
    reader = csv.reader(open("infile.csv"), 
        csv.QUOTE_NONNUMERIC, delimiter='|', quotechar='"')
    for row in reader:
        # consider: L.append( tuple( row[:14] + [Decimal(row[14])] + row[15:] ))
        L.append( tuple( row[:14] + [float(row[14])] + row[15:] ))
    pprint(L)

这会产生:

[(' 2102',
  'LINDOMAR MARTINS DE FREITAS',
  'RUA 02 NR.270',
  'FORMOSA',
  '98130860',
  'TIMON',
  'MA',
  'ADMINISTRATIVO',
  'FATURISTA',
  'LINDOMAR',
  'S',
  '20130102',
  '20130102',
  '20130102',
  115.0,
  'TDC',
  '4',
  '88792334',
  '',
  '',
  '')]

关于python - 从 csv 文件中删除货币值(value)列中的引号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14131184/

相关文章:

python - 将无数 ODT 文件转换为 PDF 的可靠且快速的方法?

python单词计数器仅显示重复项

python - 对象如何在不违反依赖倒置原则的情况下进行通信?

ios - NSDate 在 CoreData 中被保存为时间戳

python - 我如何在比较两个 csv 文件时编写 csv 基础[基于列]

python - 将 CSV 导入 Mac 上的 Jupyter Notebook (python)

php - 多个数据仅显示一次

Python 下载嵌入在页面中的 PDF

Python 设置.py : Some files are missing

java - 在 JSF 2 中动态构建 CSV