Как извлечь подмножество из текстового файла и сохранить его в отдельном файле? - PullRequest
0 голосов
/ 08 ноября 2019

В настоящее время я пытаюсь извлечь информацию из текстового файла, используя Python. Я хочу извлечь подмножество из файла и сохранить его в отдельном файле, где бы он ни находился в текстовом файле. Чтобы дать вам представление о том, как выглядит мой файл, вот пример:

C","datatype":"double","value":25.71,"measurement":"Temperature","timestamp":1573039331258250},
{"unit":"%RH","datatype":"double","value":66.09,"measurement":"Humidity","timestamp":1573039331258250}]

Здесь я хочу извлечь "value" и соответствующий номер рядом с ним. Я пробовал разные техники, но безуспешно. Я попытался перебрать файл и остановиться там, где у меня есть "value", но это не сработало.

Вот пример кода:

with open("DOTemp.txt") as openfile:
    for line in openfile:
        for part in line.split():
            if "value" in part:
                print(part)

Ответы [ 4 ]

0 голосов
/ 08 ноября 2019

Я предполагаю, что ваш входной файл представляет собой строку json (список словарей) (глядя на образец файла). Если это так, возможно, вы можете попробовать это.

import json

#Assuming each record is a dictionary
with open("DOTemp.txt") as openfile:
    lines = openfile.readlines()
    records = json.loads(lines)
    out_lines = list(map(lambda d: d.get('value'), records))
    with open('DOTemp_out.txt', 'w') as outfile:
        outfile.write("\n".join(out_lines))
0 голосов
/ 08 ноября 2019

Простое решение для возврата значения, помеченного клавишей «value»:

with open("DOTemp.txt") as openfile:
    for line in openfile:
        line = line.replace('"', '')
        for part in line.split(','):
            if "value" in part:
                print(part.split(':')[1])

Обратите внимание, что по умолчанию str.split() разделяется на пробел. В последней строке, если мы напечатаем нулевой элемент списка, это будет просто «значение». Если вы хотите использовать это как int или float, просто разыграйте его как таковое и верните.

0 голосов
/ 08 ноября 2019

Ниже код будет работать для вас:

file1 = open("untitled.txt","r")
data = file1.readlines()

#Convert to a single string
val = ""
for d in data:
    val = val + d

#split string at comma
comma_splitted = val.split(',')

#find the required float
for element in comma_splitted:
    if 'value' in element:
        out = element.split('"value":')[1]
        print(float(out))
0 голосов
/ 08 ноября 2019

Сначала разделите, используя (запятую) в качестве разделителя, затем разделите соответствующие строки, используя: в качестве разделителя. если требуется обрезать начальные и конечные "", то сравните со значением

...