Python имеет модуль с именем csv
, который позволит вам выполнять все виды чтения и записи файлов csv, без необходимости выполнять утомительную задачу - писать строки вручную, чтобы брать строки, разбивать ихвверх по запятым и т. д. Например, вы можете использовать csv.DictReader()
для чтения строк в словаре, где ключи совпадают с именами столбцов:
import csv
with open('new.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
ranking = row['Ranking']
percentage = row['Percentage']
print("The percentage in this row is", percentage)
После извлечения того, что вам нужно, и выполнениявычисления, вы можете использовать csv.DictWriter
для записи данных в ваш новый, третий CSV-файл.Поиск в сети по python csv module
должен дать вам несколько примеров.
РЕДАКТИРОВАТЬ : я прочитал ваш комментарий и увидел ваш обновленный код.Давайте посмотрим, что делает ваш вложенный цикл, насколько я могу сказать:
- Возьмите первую строку старых данных CSV
- Возьмите первую строку новых данных CSV
- Сравните их значения для "Аккаунта".Если они одинаковы, выведите их разницу (которая должна быть равна нулю, если два числа одинаковы, верно?)
- Сделайте то же самое со строкой # 1 старого истрока № 2 нового.
- Сделайте то же самое со строкой # 1 старого и строкой № 3 нового.
- Продолжайте, пока не сравните строку № 1старой и последней строки новой.
- Повторите все вышеперечисленное со строкой # 2 старой и строкой № 1 новой, затем строкой № 2 старойи строка № 2 нового, строка № 2 старого и строка № 3 нового и т. д.
Это то, что вы хотите?Или вы просто пытаетесь сравнить их построчно и записать различия?
РЕДАКТИРОВАТЬ # 2:
Я не знаю, будет ли это иметь значение, но попробуйте вместо этого:
reader_old = csv.DictReader(open("old.csv"))
reader_new = csv.DictReader(open("new.csv"))
for row_o in reader_old:
for row_n in reader_new:
amt_diff = float(row_n['Number']) - float(row_o['Number'])
print(amt_diff)
Если вы хотите записать это в новый файл, а не просто распечатать результаты, см. csv.DictWriter()
.