2014-10-27 5 views
0

Я должен начать с того, что я очень начинаю на питоне, и это также мой первый пост здесь, поэтому конструктивная критика очень хорошо оценена. Поэтому у меня есть задание, что мне нужно взять некоторые значения из текстового файла и составить список из них, но я понятия не имею, как это сделать. Текстовый файл состоит в следующем:Как создать значения из текстового файла

temperatuur 20.8 10.4 
vochtigheid 70 14 
windrichting Z 60 
windkracht 6 60 
temperatuur 21.8 10.9 
vochtigheid 60 12 
windrichting Z 60 
windkracht 4 40 
temperatuur 21.8 10.9 
vochtigheid 60 12 
windrichting Z 60 
windkracht 5 50 
temperatuur 21.8 10.9 
vochtigheid 60 12 
windrichting ZZW 50 
windkracht 5 50 
temperatuur 22.0 11.0 
vochtigheid 60 12 
windrichting ZZW 50 
windkracht 5 50 
temperatuur 22.2 11.1 
vochtigheid 65 13 
windrichting ZZW 50 
windkracht 5 50 
temperatuur 22.6 11.3 
vochtigheid 70 14 
windrichting ZZW 50 
windkracht 5 50 
temperatuur 22.8 11.4 
vochtigheid 60 12 
windrichting ZZW 50 
windkracht 4 40 
temperatuur 23.0 11.5 
vochtigheid 60 12 
windrichting ZZW 50 
windkracht 4 40 
temperatuur 23.0 11.5 
vochtigheid 60 12 
windrichting ZZW 50 
windkracht 3 30 
temperatuur 24.0 12.0 
vochtigheid 60 12 
windrichting Z 60 
windkracht 3 30 
temperatuur 25.0 12.5 
vochtigheid 60 12 
windrichting Z 60 
windkracht 2 20 
temperatuur 26.0 13.0 
vochtigheid 60 12 
windrichting Z 60 
windkracht 2 20 
temperatuur 27.0 13.5 
vochtigheid 60 12 
windrichting Z 60 
windkracht 2 20 
temperatuur 27.0 13.5 
vochtigheid 60 12 
windrichting Z 60 
windkracht 2 20 
temperatuur 25.0 12.5 
vochtigheid 60 12 
windrichting Z 60 
windkracht 3 30 
temperatuur 21.0 10.5 
vochtigheid 75 15 
windrichting W 40 
windkracht 5 50 
temperatuur 19.0 9.5 
vochtigheid 75 15 
windrichting W 40 
windkracht 5 50 
temperatuur 18.0 9.0 
vochtigheid 75 15 
windrichting W 40 
windkracht 5 50 
temperatuur 18.0 9.0 
vochtigheid 75 15 
windrichting W 40 
windkracht 5 50 
temperatuur 17.0 8.5 
vochtigheid 80 16 
windrichting W 40 
windkracht 6 60 
temperatuur 16.5 8.25 
vochtigheid 80 16 
windrichting W 40 
windkracht 6 60 
temperatuur 14.0 7.0 
vochtigheid 80 16 
windrichting W 40 
windkracht 6 60 
temperatuur 10.0 5.0 
vochtigheid 80 16 
windrichting W 40 
windkracht 6 60 

Текстовый файл называется «weerstation.txt». Как вы можете видеть, он разделен на блоки из 4 с «ярлыками», являющимися температурой (температурой), вохтигеидом (влажностью), увлажнением (ветром) и ветрозащитой (скорость ветра). Эти «ярлыки» повторяются 24 раза, потому что они принимаются каждый час на целый день. Назначение - использовать только значения метки «temperatuur» (температура на голландском языке) и составить список из него и сохранить этот список в отдельном текстовом файле. Первое значение - это температура в градусах, а второе - связанное напряжение в мВ.

Второе задание - создать граф, который читает ранее созданный текстовый файл (таким образом, тот, который был создан в первом задании), и вывести из него график. Ось x - это часы, а ось y - значения температуры (в градусах).

Я получил это далеко от себя:

L=[] 
lista = [] 
listadef = [] 

with open('weerstation.txt') as f: 
     for temperatuur in f: 
      L.append(temperatuur) 
# I used the next line just to see if it went allright and then left it there in case I need it again 
#  print(L) 

a = 0 
while (a < len(L)): 
    lista = L[a] 
    listadef.append(lista) 
    lista = [] 
    a = a+4 #I knew that the "temperatuur label" repeats itself after every 4 lines so that's why i took that route 


print(listadef) 

И это дает мне следующее:

['temperatuur 20.8 10.4\n', 'temperatuur 21.8 10.9\n', 'temperatuur 21.8 10.9\n', 'temperatuur 21.8 10.9\n', 'temperatuur 22.0 11.0\n', 'temperatuur 22.2 11.1\n', 'temperatuur 22.6 11.3\n', 'temperatuur 22.8 11.4\n', 'temperatuur 23.0 11.5\n', 'temperatuur 23.0 11.5\n', 'temperatuur 24.0 12.0\n', 'temperatuur 25.0 12.5\n', 'temperatuur 26.0 13.0\n', 'temperatuur 27.0 13.5\n', 'temperatuur 27.0 13.5\n', 'temperatuur 25.0 12.5\n', 'temperatuur 21.0 10.5\n', 'temperatuur 19.0 9.5\n', 'temperatuur 18.0 9.0\n', 'temperatuur 18.0 9.0\n', 'temperatuur 17.0 8.5\n', 'temperatuur 16.5 8.25\n', 'temperatuur 14.0 7.0\n', 'temperatuur 10.0 5.0\n'] 

Как вы можете видеть, это не так много. Так может кто-нибудь помочь мне с этим с четким объяснением того, что вы сделали, довольно пожалуйста (:

+0

Пожалуйста, спросите только один вопрос за один раз. Сосредоточьтесь на создании * очень четкой * проблемы. Добавьте только информацию, которая [требуется для воспроизведения вашей проблемы] (http://stackoverflow.com/help/mcve). – lxg

ответ

0

Вы можете использовать модуль fileinput для r используйте текстовый файл и используйте модуль matplotlib, чтобы нарисовать нужный вам рисунок. Более подробную информацию можно найти в следующем коде.

import fileinput 

temp_values = [] 
for line in fileinput.input("weerstation.txt"): 
    print line, type(line) 
    if 'temperatuur' in line: 
     temp_values.append(line.strip().split()[1]) # split the list and just add the temperature 

with open("temp_values.txt", "w") as fp: 
    fp.write("\n".join(temp_values))     # save values to temp_values.txt and finish assignment 1 

print temp_values 
# ['10.4', '10.9', '10.9', '10.9', '11.0', '11.1', '11.3', '11.4', '11.5', '11.5', '12.0', '12.5', '13.0', '13.5', '13.5', '12.5', '10.5', '9.5', '9.0', '9.0', '8.5', '8.25', '7.0', '5.0'] 


import matplotlib.pyplot as plt      # using matplotlib to draw figure and finish assignment 2 

plt.plot([i for i in xrange(0, 24)], temp_values) 
plt.xlabel("Hours") 
plt.ylabel("Temperatures") 
plt.show() 

enter image description here

+0

Я забыл сказать, что в первом назначении мне нужно составить список из обоих значений (значения градусов и mV) и сохранить его в текстовом файле. Затем я прочитал этот текстовый файл, чтобы сделать график. Теперь я понял, как взять оба значения и поместить их в текстовый файл, но как вы можете прочитать только первое значение для создания графика? – otherwise

+0

Чтобы прочитать 'temp_values.txt', вы также можете использовать функцию fileinput.input() для каждой строки в текстовом файле, просто разделите строку и сохраните первое значение. Процесс можно упростить, например 'values ​​= [line.split() [1] для строки в файлеinput.input (" temp_values.txt ")]' – Eric

0

Если вы хотите прочитать только строки, начинающиеся с «temperatuur»:

with open('weerstation.txt') as f: 
    L = [line for line in f.readlines() if line.startswith('temperatuur')] 

Если вы хотите разделить линии, как «temperatuur 20,8 10,4 \ п» для трех значений используйте функцию разделения (но не забудьте значение1 и значение2 будет строкой и вы должны преобразовать их в число, если youw хочет создать график):

label, value1, value2 = line.split() 
+0

Все, спасибо большое за ваш вклад! :) – otherwise

Смежные вопросы