2012-11-05 3 views
-1

목록의 값을 정규식 패턴과 일치 시키려고합니다. 목록 내의 특정 값이 일치하면이를 다른 dicts 목록에 추가합니다. 위에서 언급 한 값이 일치하지 않으면 목록에서 값을 제거하고 싶습니다.subprocess.check_output의 필터 출력

import subprocess 

def list_installed(): 
    rawlist = subprocess.check_output(['yum', 'list', 'installed']).splitlines() 
    #print rawlist 
    for each_item in rawlist: 
     if "[\w86]" or \ 
     "noarch" in each_item: 
      print each_item #additional stuff here to append list of dicts 
      #i haven't done the appending part yet 
      #the list of dict's will be returned at end of this funct 
     else: 
      remove(each_item) 

list_installed() 

최종 목표는 결국 비슷한 할 수있을 것입니다 : 이것은 결국 더 큰 시스템 관리자 프론트 엔드로 성장할 것입니다 : GNU에

nifty_module.tellme(installed_packages[3]['version']) 
nifty_module.dosomething(installed_packages[6]) 

주/리눅스 사용자는 태권도 연맹 것이다.

+0

하지만 무엇이 문제입니까? – Vicent

답변

0

게시물에 실제 질문이 없지만 몇 가지 의견을 드리겠습니다.

  • 당신은 여기에 문제가 있습니다 : 그것은 당신이 생각하는 방식을 해석 아니에요

    if "[\w86]" or "noarch" in each_item: 
    

    을하고 항상 True로 평가합니다. 당신은 아마 당신이 무엇을하고 있는지 모르겠지만, 경우에 당신은 파이썬 여기에 일치하는 정규 표현식을 할 것으로 기대, 또한

    if "[\w86]" in each_item or "noarch" in each_item: 
    

필요가되지 않습니다. 필요한 경우 re 모듈을 확인하십시오.

  • remove(each_item)

    나는 그것을 구현 어떻게 모르겠지만, 당신이 rawlist에서 요소를 제거하기 위해 기대한다면 아마 작동하지 않습니다 remove 실제로 목록에 액세스 할 수 없습니다 안에 정의 된 list_installed. 대신 rawlist.remove(each_item)을 사용하는 것이 좋지만,이 경우에는 을 반복 처리해야하므로 사용하지 않는 것이 좋습니다. 약간의 절차를 다시 생각해 볼 필요가 있습니다 (예를 들어, 다른 목록을 작성하고 제거하는 대신 필요한 요소를 추가하십시오).

+0

감사합니다. 그게 내 문제는 항상 사실로 평가 답변! 당신은 또한 내가 다음에 만났을 제거에 대한 정보를 주셨습니다. :-) –