如何查找千位数的字符串并删除其中的逗号?

时间:2017-10-18 04:05:53

标签: python csv

以下是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)

1 个答案:

答案 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>

如果您还有任何问题,请发表评论。