Python, проверьте строки на наличие значений и удалите другие символы - PullRequest
0 голосов
/ 19 марта 2019
f= open("new_sample.txt","r")

for ranges_in_file in f:
if(ranges_in_file.find('ranges:')!= -1):
    new_data = ranges_in_file.split(" ")
    print('success')

Привет, ребята, в настоящее время я построчно читаю файл .txt, чтобы найти определенное значение.Я могу найти линию.Например, ranges: [1.3,1.9,2.05,inf,1.64] Как сохранить определенную строку в списке и после этого удалить все лишние символы в строке, такие как слова "ranges" и "inf"?

Ответы [ 4 ]

0 голосов
/ 19 марта 2019

Для new_sample.txt :

 ranges: [1.3,1.9,2.05,inf,1.64]

вы можете разделить данные с помощью разделителя пробел и "," :

f = open("new_sample.txt", "r")
file = f.read().splitlines()
f.close()
result = []

for i in file:
    b = i.split(" ")
    if b[0] == "ranges:":
        temp = b[1][1:-1].split(",")

for j in temp:
    if j not in ["inf"]:
        result.append(j)

print(result)
OUTPUT: ['1.3', '1.9', '2.05', '1.64']
0 голосов
/ 19 марта 2019

Вы можете разделить переменную ranges и список, используя a,b=ranges_in_file.split('=') b.strip() Таким образом, b содержит требуемый список в виде строки.Используйте c=list(b[1:len(b)-1].split(',')), чтобы преобразовать его в список.Затем вы можете перебирать список и отбрасывать любые значения, которые вам не нужны.(Помните, что все записи в списке являются строками!)

0 голосов
/ 19 марта 2019

Если ваши строки всегда выглядят так, поэтому начинайте с "ranges: ", за которым следует список значений, и единственное, что вы хотите удалить, это inf, вы можете легко превратить его в список с плавающей точкой, используяmap функция выглядит следующим образом:

line = "ranges: [1.3,1.9,2.05,inf,1.64]"
values = list(map(float, [x.strip('[]') for x in (line.split(' ')[1]).split(',') if 'inf' not in x]))

Вывод:

[1.3, 1.9, 2.05, 1.64]  # list of float values

Затем вы можете применить это к каждой строке файла, которая начинается с 'ranges:', что даст вамсписок отдельных строк значений списков.Обратите внимание на использование with open(..., которое в целом безопаснее использовать для файлов, потому что файл всегда будет правильно закрыт, независимо от того, что произойдет.

values = []
with open('new_sample.txt', 'r') as f:
    for line in f.readlines():
        if line.startswith('ranges:'):
            line_values = list(map(float, [x.strip #.... and so on, see above
            values.append(line_values)

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

0 голосов
/ 19 марта 2019

Если вы прочитали строки файла и можете получить список,

что похоже на

ranges_in_file = [1.3,1.9,2.05,math.inf,1.64]

вы можете понять, что вам нужно / не нужно:

wanted = [x for x in ranges_in_file if x not in [math.inf, "range"] ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...