Как преобразовать все точки десятичного маркера в CSV-файлах в запятую с помощью Python? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть несколько CSV-файлов.

enter image description here

в этих файлах "точка" используется в качестве десятичного маркера.

enter image description here

Я хотел бы изменить все точки на запятые, а затем объединить все CSV-файлы в один CSV-файл.Как я могу сделать это в Python?

Ответы [ 3 ]

0 голосов
/ 11 октября 2018

Как уже упоминалось @Dazounet, вы можете читать файл за файлом и построчно и заменять «вручную»

from os import listdir
from os.path import isfile, join

mypath = "pathToFolder/"
files = [f for f in listdir(mypath) if isfile(join(mypath, f))]

with open(mypath + "target.csv", 'a') as outfile:
    for file in files:
        with open(mypath+file, "r") as infile:
             next(infile)
             for line in infile:
                    line = line.replace("." , ",")
                    outfile.write(line)

Код не проверен

0 голосов
/ 11 октября 2018

Использование pandas делает запись чисел запятыми тривиальными:

  • считывание в файле csv (df = pd.read_csv('path/to/file.csv'))
  • запись файла csv (df.to_csv('path/to/file.csv', decimal=','))

Обратите внимание, это добавит кавычки ко всем вашим числам, поскольку обычно используется разделитель ,.Вы можете изменить это, например, с помощью аргумента sep=';'.

Я оставлю поиск всех файлов для присоединения в качестве упражнения для читателя (см. Другие ответы здесь).

Что касаетсяобъединение всех файлов в один файл:

df = pd.concat([pd.read_csv(fname) for fname in files_to_convert])
0 голосов
/ 11 октября 2018

Вы можете проанализировать строку CSV для каждой строки, а затем использовать функцию replace() для значений, которые вы хотите заменить .

Затем, после этого преобразования, вы записываете эту строку в новый CSV файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...