메모장 + + 번호 매기기


2

아래 예와 같이 ID를 1, 2 등으로 자동으로 다시 매기는 방법 (정규 표현식 또는 기타 옵션)이 있습니까?

<comment id="53" status="new">
<comment id="54" status="new">
<comment id="55" status="new">

이에:

<comment id="1" status="new">
<comment id="2" status="new">
<comment id="3" status="new">

아래 주석의 링크에서 Python Script를 사용하려고했습니다. 위의 코드에 맞게 조정했으며 다음과 같습니다.

def calculate(match):
    return 'comment id="%s"' % (match.group(1), str(int(match.group(2))-52))

editor.rereplace('comment id="([0-9]+)"', calculate)

아무것도하지 않습니다. 왜? 내가 뭘 잘못하고 있니?


무엇으로 다시 번호를 매길까요? 빼기 52? 또는 각 목록에서 1부터 시작해야합니까? 당신의 숫자 범위는 무엇입니까? ...
Máté Juhász

각 목록에서 1부터 시작해야합니다. 53은 예일뿐입니다. 음수가 아닌 숫자 일 수 있습니다.
Slawomir_

1
도움이 될 수 있습니다 : stackoverflow.com/questions/20506990/…
StefanR

제공 한 스레드의 지침에 따라 Python 플러그인을 사용하려고했습니다. 전혀 아무것도하지 않습니다. 이유를 모르겠습니다. 처음 실행할 때 '알 수없는 예외'라는 두 단어가있는 팝업 창만 열립니다.
Slawomir_

답변:


1

아래는 Python 3.6 스크립트입니다. 파일 이름을 변경해야하고 나중에 파일 구조가 변경된 경우 정규식에도 약간의 조정이 필요할 수 있지만 현재는 파일의 행 수에 관계없이 부드럽게 실행되어야합니다.

import re
file = open('my_file_1.txt', 'r+')
i=1
new_file_content=""
for line in file:
    p = re.compile('(\d+)')
    new_file_content += p.sub(str(i), line)
    i+=1
file.seek(0)
file.truncate()
file.write(new_file_content)
file.close()


# REFERENCES
# [1] https://docs.python.org/3/tutorial/inputoutput.html
# [2] https://docs.python.org/3/howto/regex.html

마지막으로 Win 7에 Python 3.6.1을 설치 하고이 스크립트를 실행했습니다. 결과는 예상대로입니다. 고마워요!
Slawomir_ 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.