2014-11-16 19 views
0

我想讀取文件並從文件中獲取RSSI值。你如何在Python中的特定文件中讀寫名稱及其值?

這裏是什麼在dumpscan.txt文件,與RSSI和價值,它看起來像:

HCI Event: LE Meta Event (0x3e) plen 15 
    LE Advertising Report 
     ADV_IND - Connectable undirected advertising (0) 
     bdaddr B4:99:4C:64:33:E0 (Public) 
     Flags 0x05 
     RSSI: -72 
HCI Event: LE Meta Event (0x3e) plen 15 
    LE Advertising Report 
     ADV_IND - Connectable undirected advertising (0) 
     bdaddr B4:99:4C:64:33:E0 (Public) 
     Flags 0x05 
     RSSI: -70 

正如你可以看到有多個RSSI值。我想讓它們全部輸出到一個文件中。

我知道邏輯,但不能將關於如何提取文件中的RSSI值的命令組裝在一起。下面是一些邏輯代碼(這是不正確的):

dumpfile = open("dumpscan.txt","r") 
dr = dumpfile.read() 
for x in dr: 
     if x=="RSSI:" & its value in dr: 
      print RSSI and its value, 

回答

1

使用regex

import re 
    fi = open("dumpscan.txt", "r") 
    lines = fi.read() 

    regex = re.compile('RSSI:\s(\-?\d+)') 
    out = regex.findall(lines) 
    print out 

編輯:如果你需要得到RSSI值的平均值做到這一點:

avg = sum(map(int,out))/len(map(int,out)) 
    print avg 
+0

這將返回列表中的值,以便您可以稍後使用它們或將它們轉換爲整數。 – muradin

+0

這工作完美,並允許我在屏幕上打印並輸出到文件。你有任何鏈接,可以幫助我學習reg表達式嗎?歡呼男人。 –

+0

正則表達式不僅適用於python,而且它是一種非常有用的字符串解析方式,請參閱:http://en.wikipedia.org/wiki/Regular_expression 只要按下複選標記,如果您發現我的答案有用。 :) – muradin

1

使用find

dumpfile = open("dumpscan.txt","r") 
for x in dumpfile: 
    if x.find("RSSI:")>=0: 
     print x 

str.find如果找到字符串返回posiotion否則返回-1

演示:

>>> f = open('dumpscan.txt') 
>>> for x in f: 
...  if x.find('RSSI') >=0: 
...   print x 
... 
RSSI: -72 

RSSI: -70 
+0

這不打印任何東西。如果我把> = 0拿走,它會打印整個文件。 –

+0

@JonathanDavies它必須打印,我也給了演示 – Hackaholic

+0

要麼我做錯了什麼,或這是行不通的。它不打印任何東西。 –

相關問題