2011-10-02 4 views
0

업데이트 할 WSUS 그룹을 검색하는 동안 두 문자열을 비교하려고합니다. 그러나 시각적으로 같고 동일한 유형인데도 내 비교가 실패합니다. 이것이 IronPython이기 때문에 나는 코모도에서 사용할 수있는 디버거를 가지고 있지 않다. (누구든지 IP에 대해 알고있다.)IronPython에서 문자열 비교

어쨌든 누군가 내가 뭘 잘못하고 있는지 알아낼 수 있을까?

#---------------------------------------------------------------------- 
# Search for a matching patch group, and approve them. 
#---------------------------------------------------------------------- 
def WSUSApprove(apprvGrpName): 
    clr.AddReference('Microsoft.UpdateServices.Administration') 
    import Microsoft.UpdateServices.Administration 

    wsus = Microsoft.UpdateServices.Administration.AdminProxy.GetUpdateServer('wsus01',False,8530) 

    parentGroupCollection = wsus.GetComputerTargetGroups() 
    for computerTarget in parentGroupCollection: 
     if computerTarget.Name.ToString() == 'Servers': 
      parent = computerTarget 
      childGroupCollection = parent.GetChildTargetGroups() 
      for computerTarget in childGroupCollection: 
       print type(computerTarget.Name.ToString()) 
       print type(apprvGrpName) 
       if apprvGrpName == computerTarget.Name.ToString(): 
        print 'success', computerTarget.Name.ToString() 
       else: 
        print 'a', computerTarget.Name.ToString() 
        print 'b', apprvGrpName 

#--output that should be equal--# 

<type 'str'> 
<type 'str'> 
a 3 Tuesday 
b 3 Tuesday 
+0

'그중 하나에 \ n이 표시됩니다. 당신의 도움을 주셔서 감사합니다. 이봐. – EdgeCase

+0

나는 그것을 대답으로 옮길 것이다. 귀하의 질문에 대한 답변을 수락하는 것을 기억하십시오 (귀하는 처음 두 사람에게 한 것이 아닙니다). – agf

답변

1

파이썬 2.x에서 두 문자열이 동일한 지 시각적으로 보려면 repr()을 사용하십시오. print은 기본적으로 str을 호출하므로 인쇄 할 수없는 문자는 볼 수 없으며 공백의 차이를보기가 어렵습니다.

따라서는, 할 : 그들은 동일하지 왜

print repr(computerTarget.Name.ToString()) 
print repr(apprvGrpName) 

알아.

repr()이 유니 코드 문자를 이스케이프 처리하지 않는 Python 3.x에서 사용할 내용에 대한 John Manchin의 설명을 참조하십시오.

+1

파이썬 3.x에서는'ascii()'를 사용하십시오. 파이썬 3.x'repr()'은 비 ASCII 문자를 이스케이프 문자열로 나타내지 않으므로 모호성에 대한 상당한 범위가 남아 있습니다. –

+0

은 파이썬 1.x 문제라면 상관 없습니다. "항상"이라고 말하지 마십시오. –

0

대부분의 문자열에는 줄 바꿈, 캐리지 리턴 또는 공백과 같은 후행 공백 문자가 있습니다.

+1

예, 그는 그가 이것을 권고 한 후에'repr'을 사용했기 때문에 이것을 알고 있습니다. 질문에 대한 의견을 참조하십시오. – agf