技术问询:如何在CSV文件中将逗号替换为小数点后替换分号为逗号
嘿,看起来你要把这份欧洲格式的CSV(用分号做字段分隔符、逗号做小数位)转换成标准的CSV格式,我整理了几个实用的解决方案,适配不同的场景:
方法1:纯文本替换(最快最直接,适合小文件)
如果你的CSV结构简单,没有嵌套的分隔符(比如引号里的分号/逗号),直接读整个文件做字符串替换就够了,不需要额外依赖:
# 读取原始CSV文件内容 with open("your_input.csv", "r", encoding="utf-8") as input_file: raw_content = input_file.read() # 先把逗号(小数分隔符)换成小数点,再把分号(字段分隔符)换成逗号 processed_content = raw_content.replace(",", ".").replace(";", ",") # 写入处理后的标准CSV with open("standard_output.csv", "w", encoding="utf-8") as output_file: output_file.write(processed_content)
这个方法的优势是简单粗暴,几行代码搞定,完全不需要处理CSV的结构逻辑,适合你给出的这种格式规整的小文件。
方法2:用Pandas处理(适合后续数据分析)
既然你已经导入了Pandas,那可以利用它的内置参数直接处理格式转换,同时还能得到可直接分析的DataFrame:
import pandas as pd # 读取欧洲格式CSV:指定分号为字段分隔符,逗号为小数分隔符 df = pd.read_csv("your_input.csv", sep=";", decimal=",") # 导出为标准CSV:默认用逗号分隔字段,小数点做小数位 df.to_csv("pandas_output.csv", index=False)
这个方法更健壮,即使CSV里有引号包裹的字段(比如包含逗号的文本),Pandas也能正确解析,而且处理完的数据可以直接用来做统计、可视化等操作。
方法3:用CSV模块逐行处理(适合超大文件)
如果你的CSV文件特别大,一次性读入内存会有压力,推荐用Python内置的csv模块逐行处理:
import csv # 打开输入和输出文件 with open("your_input.csv", "r", encoding="utf-8") as infile, \ open("csv_module_output.csv", "w", encoding="utf-8", newline="") as outfile: # 配置原始文件的读取器:分号分隔字段 reader = csv.reader(infile, delimiter=";", quoting=csv.QUOTE_NONE) # 配置输出文件的写入器:逗号分隔字段 writer = csv.writer(outfile, delimiter=",") # 逐行处理:替换每个单元格里的逗号为小数点 for row in reader: cleaned_row = [cell.replace(",", ".") if cell else cell for cell in row] writer.writerow(cleaned_row)
这个方法的内存占用极低,因为每次只处理一行数据,适合GB级别的超大CSV文件。
处理后的预期结果
按照你的示例内容,处理后应该得到:
2018-03-16: ECarbix Prices/Volumes for Emission Spot MarketData type(ST),Trading Date,Creation TimeData type(IL),Index,Unit,Price,VolumeData type(AL),Number of LinesST,2018-03-16,2018-03-19T08:39:48+01:00
IL,Day,EUR/tCO2,10.97,4533000
AL,9
内容的提问来源于stack exchange,提问作者Anupam Soni
相关产品推荐
相关产品推荐

