2016-07-26 2 views
0

실행 파일을 실행하고 해당 출력을 구문 분석하고 행을 QDLoader 9008과 일치시킨 다음 COM 포트 값을 얻으려는 경우 스크립트 출력은 COM75이어야합니다. 아래의 스크립트는 문자열이 일치하는 줄을 인쇄하지 않습니다. 그 이유는 무엇입니까?실행 파일의 구문 분석

import os 
import re 
import subprocess 
''' 
C:\Dropbox\h_loader>lsusb.exe 
Communications Port (COM1) 
Intel(R) Active Management Technology - SOL (COM3) 
COMPANY HS-USB QDLoader 9008 (COM75) 
COMPANY HS-USB Diagnostics 9025 (COM64) 
COMPANY HS-USB NMEA 9025 (COM63) 
COMPANY HS-USB Diagnostics 9091 (COM81) 

''' 

cmd = 'lsusb.exe' 
proc = subprocess.Popen(cmd.split(' '), stdout=subprocess.PIPE, stderr=subprocess.PIPE) 

(output, error) = proc.communicate() 
QD_line = re.search('QDLoader 9008',output) 
print QD_line 


EXPECTED OUTPUT:- 
    COM75 
+0

내가 제대로 이해한다면 :

match= re.search(r'QDLoader 9008 \((\w*)\)',output) 

후 캡처 한 문자열에 액세스 :

당신은 당신이 관심있는 출력의 일부를 캡처하여 패턴을 변경해야 결과는'<_sre.SRE_Match object at 0x02B16988>'과 같은 것입니까? –

+0

Rawing - thats correct –

답변

2

re.search은 문자열이 아니고 match object을 반환합니다. 이더라도 문자열을 반환하면 COM75을 반환 할 수 없습니다. 정규식이 마음에 들지 않습니다. 예상되는 출력을 어떻게 알 수 있습니까? 그래서

print match.group(1) 
관련 문제