Как разделить строку CSV с запятыми для форматирования чисел - PullRequest
0 голосов
/ 07 июля 2019

Я загружаю запрос на использование файла cvs и когда мне нужно разделить, но у него есть некоторые запятые форматирования в полях чисел, как:

line='2019-07-05,sitename.com,"14,740","14,559","7,792",$11.47'

когда я пытаюсь разбить:

data = line.split(',')

он получил это значение:

['2019-07-05', 'nacion.com', '' 14 ',' 740 '', '' 14 ',' 559 '', «7», «792», «$ 11,47»]

Мне понадобится:

['2019-07-05', 'nacion.com', '14740', '14559', '7792', '$ 11,47']

Мне нужно решить это в Python 3.7

любая помощь приветствуется

1 Ответ

0 голосов
/ 07 июля 2019

Я обычно не люблю использовать регулярные выражения, но здесь может не быть другого выбора. Попробуйте это - он в основном удаляет внутренние , s в два этапа:

import re

line='2019-07-05,sitename.com,"14,740","14,559","7,792",$11.47'

new_line = re.sub(r',(?!\d)', r"xxx", line).replace(',','').replace('xxx',',')
print(new_line)

Выход

2019-07-05, sitename.com, "14740", "14559", "7792", $ 11,47

Теперь вы можете использовать:

data = new_line.split(',')

Пояснение: Регулярное выражение ,(?!\d) выбирает все , s в line, которые не находятся между двумя цифрами. .sub заменяет их (временно) на xxx с. Следующий .replace удаляет оставшиеся , s, которые являются внутренними числами, заменяя их ничем, и, наконец, последний .replace восстанавливает разделители ,, заменяя временные xxx s ,.

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