У меня есть эта функция чтения, где он читает файл CSV, используя csv.DictReader. Файл.csv разделен запятыми и полностью читается. Тем не менее, эта часть моего файла имеет столбец, который содержит несколько запятых. У меня вопрос, как я могу убедиться, что запятая считается частью столбца? Я не могу изменить свой CSV-файл, чтобы соответствовать критериям.
Текстовый файл :
ID,Name,University,Street,ZipCode,Country
12,Jon Snow,U of Winterfell,Winterfell #45,60434,Westeros
13,Steve Rogers,NYU,108, Chelsea St.,23333,United States
20,Peter Parker,Yale,34, Tribeca,32444,United States
34,Tyrion Lannister,U of Casterly Rock,Kings Landing #89, 43543,Westeros
Требуемый вывод:
{'ID': '12', 'Name': 'Jon Snow', 'University': 'U of Winterfell', 'Street': 'Winterfell #45', 'ZipCode': '60434', 'Country': 'Westeros'}
{'ID': '13', 'Name': 'Steve Rogers', 'University': 'NYU', 'Street': '108, Chelsea St.', 'ZipCode': '23333', 'Country': 'United States'}
{'ID': '20', 'Name': 'Peter Parker', 'University': 'Yale', 'Street': '34, Tribeca', 'ZipCode': '32444', 'Country': 'United States'}
{'ID': '34', 'Name': 'Tyrion Lannister', 'University': 'U of Casterly Rock', 'Street': 'Kings Landing #89', 'ZipCode': '43543', 'Country': 'Westeros'}
Как вы можете сказать, "Улица" имеет как минимум две запятые из-за чисел:
13, Стив Роджерс, NYU, 108, Chelsea St. , 23333, Соединенные Штаты
20, Питер Паркер, Йель, 34, Трибека , 32444, Соединенные Штаты
Примечание: Большинство читаемых столбцов разделяется на str, str НО под столбцом 'Street', за ним следует str, str (после запятой есть дополнительный пробел). Я надеюсь это имеет смысл.
В опциях, которые я пытался найти, используется re.split, но я не знаю, как реализовать это в моем файле для чтения. Я думал re.split(r'(?!\s),(?!\s)',x[:-1])
? Как я могу убедиться, что формат из моего файла будет считаться частью любого столбца? Я не могу использовать панд.
Мой текущий вывод выглядит следующим образом:
{'ID': '12', 'Name': 'Jon Snow', 'University': 'U of Winterfell', 'Street': 'Winterfell #45', 'ZipCode': '60434', 'Country': 'Westeros'}
{'ID': '13', 'Name': 'Steve Rogers', 'University': 'NYU', 'Street': '108', 'ZipCode': 'Chelsea St.', 'Country': '23333', None: ['United States']}
{'ID': '20', 'Name': 'Peter Parker', 'University': 'Yale', 'Street': '34', 'ZipCode': 'Tribeca', 'Country': '32444', None: ['United States']}
{'ID': '34', 'Name': 'Tyrion Lannister', 'University': 'U of Casterly Rock', 'Street': 'Kings Landing #89', 'ZipCode': '43543', 'Country': 'Westeros'}
Это моя функция чтения:
import csv
list = []
with open('file.csv', mode='r') as csv_file:
csv_reader = csv.DictReader(csv_file, delimiter=",", skipinitialspace=True)
for col in csv_reader:
list.append(dict(col))
print(dict(col))