#python #csv
#python #csv
Вопрос:
Мне нужно прочитать файл в словарь, но он содержит более одного разделителя:
AGE 32
JOB clerk
NAME Bob Young
должно стать
d = {
"AGE": "32",
"JOB": "clerk",
"NAME": "Bob Young"
}
d = pd.read_csv("file.txt", delimiter=" ", header = None).to_dict()[0]
сбой, поскольку ИМЯ содержит второй пробел. Как я могу подавить второй разделитель?
Комментарии:
1. Попробуйте
str.split
. docs.python.org/3.3/library /…
Ответ №1:
вы можете прочитать файл, используя собственный python
dicti={}
f = open("file.txt", "r").read().splitlines()
for x in f:
dicti[x.split(' ')[0]]=x.split(' ',maxsplit=1)[1]
print(dicti)
и вывод будет:
{'AGE': '32', 'JOB': 'clerk', 'NAME': 'Bob Young'}
Ответ №2:
with open("data_into_dict.txt", 'r', encoding="utf-8") as f:
lines = f.readlines()
d = {}
for line in lines:
if " " in line:
sep_pos = line.index(" ")
key = line[0:sep_pos]
d[key] = line[sep_pos:].strip() # strip() removes n
print(d)
Выводит:
{'AGE': '32', 'JOB': 'clerk', 'NAME': 'Bob Young'}
Комментарии:
1. так много хороших решений за считанные минуты — спасибо!
Ответ №3:
Попробуйте:
d = {}
with open("file.txt") as f:
lines = f.read().split('n')
for l in lines:
words = l.split(" ")
d[words[0]] = ' '.join(words[1:])
Ответ №4:
Не элегантное решение, но изменит файл так, чтобы он был пригоден для чтения с read_csv
:
with open("data.csv", "r") as f_in, open("data_formatted.csv", "w") as f_out:
for l in f_in:
f_out.write(l.replace(" ", ",", 1))
data_formatted.csv
затем его можно легко прочитать.