Python 从csv文件中删除货币值列中的引号?
从csv文件中删除货币值列中的引号 我的CSV:Python 从csv文件中删除货币值列中的引号?,python,csv,Python,Csv,从csv文件中删除货币值列中的引号 我的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 = []
" 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列表中,值为
115.00
的列是'115.00'
。我认为方法是在所有列上加引号。您可以在适当的列上使用float。但是请注意,由于舍入误差,浮动通常不用于货币值。Python有一个专门的类型来实现这一点,与纯浮点相比,它有很多优点,值得注意的是:
。。。十进制数字可以精确表示。相反,像1.1和2.2这样的数字在二进制浮点中没有精确的表示。最终用户通常不希望1.1+2.2显示为3.30000000000000003,因为它使用二进制浮点
这将产生:
[(' 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',
'',
'',
'')]
csv.reader将始终以stringmiku的形式读取输入,我有几个文件。在不同的位置有几个列。在那之后,我想插入一个Oracle数据库。@Ivanelson,我想这只是一个参数化的问题。我在我的帖子中添加了一条关于浮动和货币的重要提示。但这也是一个新问题。如何容易识别CSV的哪个列/位置具有115.00这样的值?@Ivanelson,这取决于您的数据。在最坏的情况下,无法识别数据到底是什么。例如,9.58是一种货币还是当前100米世界纪录的时间?DBAPI应该能够解决它并根据列类型存储数据?!我将搜索更多的DBAPI。
[(' 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',
'',
'',
'')]