#python #file #csv
#python #файл #csv
Вопрос:
В настоящее время я считываю данные из csv-файла и ввожу токены и их определения в словарь. Код работает нормально, пока не попадет в место, где данные в CSV-файле выглядят следующим образом:
"Token000nip addressntesttestest"
Вот мой код на данный момент:
for line in f:
if "Token" in line and re.search("Tokend", line):
commaIndex = line.index(",", line.index("Token"))
csvDict[line[line.index("Token"): commaIndex]] = line[commaIndex 1: line.index(",", commaIndex 1)]
Комментарии:
1. docs.python.org/3/library/csv.html#module-csv должно помочь. но это трудно проверить, если вы не предоставляете немного больше контекста для вашего ввода csv.
2. Я думаю, причина проблемы в том, что вы читаете файл построчно, и все же некоторые значения в вашем файле также содержат символ новой строки (
n
), как в случае с приведенным вами примером.3. Если в полях есть новые строки и вокруг полей нет кавычек, как вы узнаете, когда заканчивается строка? какой разделитель он использует для строк? Было бы полезно показать несколько строк образца csv.
Ответ №1:
Используйте это:
import csv
data={}
with open('your_file.csv') as csv_file:
reader=csv.reader(csv_file, skipinitialspace=True, quotechar="'")
for row in reader:
data[row[0]]=row[1:]
print(data)
Я рекомендую вам взглянуть на документацию по CSV-модулю
Комментарии:
1. Я думал об использовании этого, но он считывает данные противоположным образом, который я настроил. (читается вертикально, а не горизонтально или наоборот, я не могу вспомнить). Есть ли способ изменить способ чтения?
2. Ну, я не знаю, есть ли что-нибудь подобное (AFAIK, это не так). Но я думаю, что в стандартном csv каждая строка представляет собой запись, и я не совсем понимаю, почему вы хотели бы настроить свой файл другим способом