以下是csv文件的简单示例:
ID, Name, p1, p2, p3, p4
3003,健和興,38.75,38.95,38.00,38.35
3005,神基,38.20,39.20,38.00,39.15
3008,大立光,"3,805.00","3,810.00","3,780.00","3,795.00"
3010,華立,45.90,46.00,45.80,45.85
3011,今皓,7.40,7.57,7.24,7.46
我想更改第3行中的数据
3008,大立光,"3,805.00","3,810.00","3,780.00","3,795.00"
变成这样:
3008,大立光,3805.00,3810.00,3780.00,3795.00
和csv文件是这样的:
ID, Name, p1, p2, p3, p4
3003,健和興,38.75,38.95,38.00,38.35
3005,神基,38.20,39.20,38.00,39.15
3008,大立光,3805.00,3810.00,3780.00,3795.00
3010,華立,45.90,46.00,45.80,45.85
3011,今皓,7.40,7.57,7.24,7.46
因为原始的csv文件有数百行,我不确定数千个数字总是出现在同一行,并希望数据可以转换为float。我不知道如何在python中编写代码?
非常感谢您的帮助!
我尝试编写如下代码,但没有解决:
# -*- coding: utf-8 -*-
import csv
with open('output_fixx_t.csv', 'r', newline = '') as infile:
reader = csv.reader(infile)
fixed = []
for rows in reader:
for field in rows:
try:
x = float(field)
field.replace(",", "")
except ValueError:
pass
fixed.append(field)
with open('output_fixxx.csv', 'w', newline = '') as outfile:
writer = csv.writer(outfile)
writer.writerow(fixed)
答案 0 :(得分:0)
如果您的文件与您在问题中提到的模式完全相同,则只需将CSV作为字符串读取,然后使用以下正则表达式进行替换或替换。请查看这些以获取更多信息re.sub()和regular expression in python。
import re
re.sub(r'\"(\d+)\,(\d+\.\d+)\"', "\g<1>\g<2>", str)
我已经使用regex101.com在线代码测试了上述模式,只需选择python,放置文件内容并放置模式\"(\d+)\,(\d+\.\d+)\"
,并确保打开正则表达式标记"/general"
< / p>
如果您还有任何问题,请发表评论。