чтение файла Python в структуру данных - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть TXT-файл, такой как https://pastebin.com/SVjVTPTA.

Как я могу прочитать значения x и y в какую-то структуру данных, например, двумерный массив или словарь?

Я пробовал это, ноэто не работает:

f= open('text.txt', 'r')
newDict = {}
for line in f:
    n, r, t = line.strip().split(' ')
    newDict[k.strip()] = v.strip()

Если у вас есть лучшее и более краткое решение, чем моя попытка, пожалуйста, напишите здесь об этом бедном приятеле.Пожалуйста, помилуйте меня, я новичок в Python и использую компьютеры!

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Если вы используете словарь, вы можете потерять некоторые значения.Поскольку словарь key должен быть уникальным.

Чтобы сохранить данные в массиве 2D, вы можете сделать:

  1. Обойти все строки
  2. Для каждогострока разделяет два числа и помещает их в список (если это возможно)

Этого можно добиться с помощью следующего сценария

data_parse.py:

result = []
with open("test.txt") as data_file:
    lines = data_file.readlines()
    for line in lines:
        try:
            result.append(list(map(float, line.strip().split())))
        except:
            pass
print(result)

Вывод:

[[-2.0, 37.0], [-1.75, 24.16016], [-1.5, 15.0625], [-1.25, 8.91016], [-1.0, 5.0], [-0.75, 2.72266], [-0.5, 1.5625], [-0.25, 1.09766], [0.0, 1.0], [0.25, 1.03516], [0.5, 1.0625], [0.75, 1.03516], [1.0, 1.0], [1.25, 1.09766], [1.5, 1.5625], [1.75, 2.72266], [2.0, 5.0], [2.25, 8.91016], [2.5, 15.0625], [2.75, 24.16016]]
0 голосов
/ 26 апреля 2018

Вы можете попробовать вот так, если хотите использовать o / p в формате dict.Кроме того, orderdDict сохранит ваш порядок ваших данных:

with open('j.txt', 'r') as f:
    lines = f.readlines()
    newDct = {i.strip().split()[0]:i.strip().split()[1] for i in lines[2:]}
print(newdict)

o / p будет выглядеть следующим образом:

{'0.25': '1.03516', '-0.25': '1.09766', '0.00': '1.00000', '1.50': '1.56250', '0.75': '1.03516', '1.00': '1.00000', '2.00': '5.00000', '-1.00': '5.00000', '-1.75': '24.16016', '1.25': '1.09766', '-1.25': '8.91016', '-0.50': '1.56250', '1.75': '2.72266', '-1.50': '15.06250', '2.25': '8.91016', '2.75': '24.16016', '2.50': '15.06250', '-0.75': '2.72266', '-2.00': '37.00000', '0.50': '1.06250'}

Если вы хотите, чтобы в массиве 2d здесь был другой способ:

with open('j.txt', 'r') as f:
    lines = f.readlines()
    lst = [i.strip().split() for i in lines[2:]]
print(lst)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...