Как преобразовать строку в список чисел - PullRequest
0 голосов
/ 25 декабря 2018

У меня проблема с преобразованием списка из строки в числа в Python.

Я читаю файл и мне нужно извлечь из него данные координат.

Файл содержит эти координаты:

(-5 -0.005 -5)
(-4.9 -0.005 -5)
(-4.8 -0.005 -5)
(-4.7 -0.005 -5)
(-4.6 -0.005 -5)
(-4.5 -0.005 -5)
(-4.4 -0.005 -5)
(-4.3 -0.005 -5)
(-4.2 -0.005 -5)
(-4.1 -0.005 -5)

Сначала я читаю файл и получаю координаты, используя этот код:

f = open("text.txt", 'r')
if f.mode == 'r':
    contents = f.readlines()

После этого, если я позвонил content [0], он показал (-5 -0,005 -5) в виде строки.

Я пытался манипулировать содержимым.

coor = contents[0]                  # picking 1 list of coordinates
allNumber = coor[1:-2]              # delete the open and close brackets
print(list(map(int, allNumber)))    # hopefully get the integers mapped into x, y, and z coordinates :(

Я получил такие результаты:

ValueError: invalid literal for int() with base 10: '-'

Я хочу что-то вроде [-5, -0.005, -5], поэтомуЯ могу извлечь каждый номер внутри него.

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018
data = []
with open('test.txt') as f:  # Better way to work with files
    lines = f.readlines()

for line in lines:
    data.append(line.strip()[1:-1].split(", "))

после этих данных будет список списков, поэтому вы можете получить любой элемент с data[index_of_the_line][index of the elemnt]

0 голосов
/ 25 декабря 2018

Вы можете сделать это следующим образом:

with open('test.txt') as f:
    lines = (line.strip()[1:-1] for line in f)
    values = (tuple(map(float, line.split())) for line in lines)
    data = list(values)

print(data)
# [(-5.0, -0.005, -5.0), (-4.9, -0.005, -5.0), (-4.8, -0.005, -5.0),
#  (-4.7, -0.005, -5.0), (-4.6, -0.005, -5.0), (-4.5, -0.005, -5.0),
#  (-4.4, -0.005, -5.0), (-4.3, -0.005, -5.0), (-4.2, -0.005, -5.0), (-4.1, -0.005, -5.0)]

Используйте with open()..., чтобы убедиться, что файл закрывается, что бы ни случилось.

lines - генератор, он повторяется настроки файла и возвращает каждую строку, лишенную новой строки, после вырезания первого и последнего символа в скобках.

values создает кортеж для каждой из этих очищенных строк, разбивая ее и поворачиваязначения с плавающей точкой, поскольку они не являются целыми числами.

Затем мы составим из него список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...