예제에 문제가 있습니다. ndiff의 처음 두 인수는 각각 문자열 목록이어야합니다. 당신은 문자들의리스트처럼 다루어지는 하나의 문자열을 가지고있다. the docs을 참조하십시오. 예 : t1 = 'one 1\ntwo 2\nthree 3'.splitlines()
그러나 다음 예제에서와 같이 difflib.ndiff는 모든 행에 대해 linejunk 함수를 호출하지 않습니다. 이것은 오랫동안 행해졌습니다 - Python 2.2에서 2.6까지 및 3.1에서 검증되었습니다.
스크립트 예 : 파이썬 2.6 실행에서
from difflib import ndiff
t1 = 'one 1\ntwo 2\nthree 3'.splitlines()
t2 = 'one 1\ntwo 29\nthree 3'.splitlines()
def lj(line):
rval = '2' in line
print("lj: line=%r, rval=%s" % (line, rval))
return rval
d = list(ndiff(t1, t2 )); print("%d %r\n" % (1, d))
d = list(ndiff(t1, t2, lj)); print("%d %r\n" % (2, d))
d = list(ndiff(t2, t1, lj)); print("%d %r\n" % (3, d))
출력 : 당신은 버그로보고 할 수도 있습니다
1 [' one 1', '- two 2', '+ two 29', '? +\n', ' three 3']
lj: line='one 1', rval=False
lj: line='two 29', rval=True
lj: line='three 3', rval=False
2 [' one 1', '- two 2', '+ two 29', '? +\n', ' three 3']
lj: line='one 1', rval=False
lj: line='two 2', rval=True
lj: line='three 3', rval=False
3 [' one 1', '- two 29', '? -\n', '+ two 2', ' three 3']
. 그러나 문서는 "정크"인 줄에 어떤 의미가 붙어 있는지 분명하게 말하지 않습니다. 기대했던 결과는 무엇입니까?
또한 의문 : 기본 linejunk 기능은 사용하지 않는 것과 동일 사용시 말하면 결과
4 [' one 1', '- ', '+ ', '+ #', '+ ', ' two 2']
5 [' one 1', '+ ', '- ', '- #', '- ', ' two 2']
6 [' one 1', '- ', '+ ', '+ #', '+ ', ' two 2']
7 [' one 1', '+ ', '- ', '- #', '- ', ' two 2']
: 스크립트에이 라인을 추가 :
t3 = 'one 1\n \ntwo 2\n'.splitlines()
t4 = 'one 1\n\n#\n\ntwo 2\n'.splitlines()
d = list(ndiff(t3, t4 )); print("%d %r\n" % (4, d))
d = list(ndiff(t4, t3 )); print("%d %r\n" % (5, d))
d = list(ndiff(t3, t4, None)); print("%d %r\n" % (6, d))
d = list(ndiff(t4, t3, None)); print("%d %r\n" % (7, d))
는이 출력을 생성 linejunk 함수는 다른 "쓰레기"행 (초기 해시를 제외한 공백)을 포함하는 경우에 사용됩니다.
아마 당신이 달성하려는 것을 우리에게 말할 수 있다면, 우리는 대안적인 접근 방법을 제안 할 수있을 것입니다. 추가 정보
후
편집 의도는 의미를 '2'를 포함하는 모든 라인을 무시 그들이 ndiff 목적을 위해 존재하지 않는 척하는 일반성에있는 경우, 당신이해야 할 핑계를 켭니다 현실로 :
내 의도는 두 번째 줄을 무시하고 차이점을 표시하지 않는 생성기가됩니다. – behindalens
나는 그것을 끝내었다. 원래 HtmlDiff 함수를 사용하고 있었고 html 출력을 만들 때 특정 줄을 무시하기를 원했습니다. 나는 문서가 두 사람이 관련되어 있음을 암시했기 때문에 ndiff로 인도되었다. linejunk 함수가 실제로이 시점에서 무엇을하는지 궁금합니다. – behindalens
@behindalens : 나는 당신의 경이를 이야기합니다. 버그 보고서 및/또는 문서 설명 요청을 제출할 수 있습니다. 나는 소스 코드를 읽을 수도 있습니다 :-) ... 그동안 질문에 대한 답변이 있다고 생각합니까? –