прочитать текстовый файл (слова, разделенные двоеточиями) и получить список кортежей

1

У меня есть текстовый файл с именем words.txt пар слов и описания, разделенных двоеточием, например:

word1:description 1 bla bla bla
word2:description 2 blah blah
...

Мне нужна структура, подобная этой:

[('word1', 'description 1 bla'), ('word2', 'description 2 blah')]

если вы считаете, что другая структура, отличная от списка кортежей, лучше всего мне скажу... Мне было бы очень приятно, используя список compushesion, но я застрял.

  • 0
    Дикт, возможно?
  • 0
    Ваш файл довольно близок к формату YAML. Если у вас есть контроль над форматом, вы можете рассмотреть возможность использования истинного YAML и тем самым упростить ваш код.
Теги:

4 ответа

3
Лучший ответ

Как насчет просто:

[line.split(':', 1) for line in open('words.txt')]

или

dict(line.split(':', 1) for line in open('words.txt'))
  • 0
    +1 с незначительным придиркой: он попросил кортежи, так что вам нужно будет обернуть line.spit(':') в вызов tuple() .
  • 0
    Он просто хочет получить доступ к слову и его значению. Диктовое решение еще лучше. :)
Показать ещё 3 комментария
0
[tuple(line.partition(':')[0:3:2]) for line in open('file.txt')]
0

Или вы можете сделать следующее

text = """
          word1:description 1 bla bla bla
          word2:description 2 blah blah
       """
[tuple(x.strip().split(':', 1)) for x in text.split('\n') if ':' in x]
0
data = []
for line in open('file.txt'):
  data.append(tuple(line.strip().split(':')))

"tuple" используется только для изменения списка, возвращаемого split, в кортеж.

Дополнительно:

data = dict(data)

потом, чтобы изменить его на слово: словарь описания, который может быть лучшим представлением того, что вы хотите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню