python считывает файл (или строку) в словарь только с помощью первого разделителя

#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 затем его можно легко прочитать.