본문으로 이동

사용자:WonRyong/replace.py

위키문헌 ― 우리 모두의 도서관.

Replace.py은 Pywikipedia bot 프로그램을 사용하는 봇이다.

이 봇은 원하는 텍스트를 찾아서 원하는 텍스트로 자동교환을 한다.

옵션

[편집]

다음과 같은 옵션(파라메타)을 사용할 수 있다:

-xml
지역서버의 XML dump 파일에서 원하는 작업을 한다.(현재 페이지들의 XML dump 파일은 [1]에 있다.) 이렇게 사용하면 된다: -xml:덤프 파일명 아래 예제 1번 참조.
-file
사용자 PC에 있는 외부 텍스트 파일에 있는 모든 페이지들에서 작업을 한다. Will read any [[wiki link]] and use these articles. 이렇게 사용하면 된다: -file:외부 파일명 아래 예제 5번 참조.
-cat
지정한 카테고리(분류)에 있는 모든 문서를 처리한다. 이렇게 사용하면 된다: -cat:분류의 이름
-page
지정한 단 한 개의 페이지만 작업한다. 이렇게 사용하면 된다: -page:pagename 여러 페이지들을 처리하려면 이 명령어를 여러번 입력하면 된다.
-ref
지정해 준 문서를 가리키는 모든 문서들을 작업한다. 이렇게 사용하면 된다: -ref:문서 이름
-start
지정한 문서부터 시작해서, 모든 문서를 처리한다. -start:!라고 입력하면, 모든 문서를 처리한다. 주의: 이 옵션 보다는 -xml 옵션의 사용을 권장한다; this is meant for cases where there is no recent XML dump.
-regex
regular expressions 을 사용하여 교환작업을 한다. 만약 이 옵션이 부여되지 않으면, 봇은 단순한 텍스트 교환 작업만 할 것이다.
-except:XYZ
XYZ를 포함한 문서는 생략한다. -regex 옵션이 같이 사용되었다면, XYZ는 regular expression으로 간주될 것이다.
-fix:XYZ
Perform one of the predefined replacements tasks, which are given in the dictionary 'fixes' defined inside this file. The -regex argument and given replacements will be ignored if you use -fix.
현재 사용 가능한 옵션은 다음과 같다:
  • -fix:HTML: "HTML 태그"를 "위키 문법"으로 고친다. 아래 예제 3번 참조.
-namespace:n
Number of namespace to process.
-always
매 번 고칠 때 마다 사용자에게 묻지 않고, 아무 질문없이 전부 다 고쳐버린다.
기타 argument
첫 argument는 옛 문장이고, 두번째 argument는 새 문장이다. -regex 옵션이 사용되었다면, 첫 argument는 regular expression으로 여겨질 것이다. 그리고 두번째 argument는 \\1 이나 \g 을 포함해야 할 것이다. 아래 예제 5번 참조.

주의사항: -xml, -file, -page는 각각 따로 사용해야 하며, 함께 섞어서 사용하지 말 것.

예제

[편집]

1. 만약 옛날의 문장에서 틀로 변경하고 싶다면, 예컨대, {{msg:Stub}}를 새로운 문장으로 바꾸고 싶다면, 예컨대 {{Stub}}로 바꾸고 싶다면, 영어판 등은 http://download.wikimedia.org 에서, 한국어 일본어 말레이시아어 태국어 판은 http://download-yaseo.wikimedia.org/ 에서 XML dum file(현재버전)을 다운로드 해서, 다음의 명령어를 입력하라:

   python replace.py -xml -regex "{{msg:(.*?)}}" "{{\1}}"

2. 만약 foobar.xml라는 이름의 덤프 파일을 받았다면, 그리고 Errror -> Error로 텍스트를 자동수정하고 싶다면, 다음과 같이 입력하면 된다:

   python replace.py -xml:foobar.xml "Errror" "Error"

3. 만약 "John Doe" 라는 페이지에서 "HTML 태그"를 "위키 문법"으로 바꾸고 싶다면, 다음과 같이 하면 된다:

   python replace.py -page:John_Doe -fix:HTML

4. 만약 특별한 옵션 부여 없이, 여러번의 문구교환을 하려면, 다음과 같이 하면 된다:

   python replace.py -file:blah.txt

봇은 문서를 수정하기 전에 사용자에게 물어 올 것이다. 이것은 이중 체크를 할 수 있기에 권장된다.

5. articles_list.txt 라는 외부 파일에다가, 사용자는 다음과 같이 위키백과 페이지 목록을 적어서 저장할 수 있다. 물론 파일명은 다른 이름이어도 된다:

 [[plane]]
 [[vehicle]]
 [[train]]
 [[car]]

articles_list.txt이란 이름으로 저장한다. 그리고 봇 명령을 다음과 같이 입력한다:

 python replace.py -file:articles_list.txt "errror" "error"

그러면, 봇은 plane, vehicle, train, car의 문서에서 "errror"라는 문장을 "error"로 고칠 것이다.

나의 사용법을 실례로 설명

[편집]
  • C:\pwikipedia\re1.txt 파일에 다음을 저장한다. 윈도우즈의 기본 메모장을 사용하되, UTF-8 형식으로 저장해 줘야 한다.
[[:분류:대한민국 민법]]
[[:분류:대한민국 상법]]
[[:분류:대한민국의 법률]]
[[:분류:대한민국의 시행령]]
[[대한민국 법률]]
[[각종기념일등에관한규정]]
[[교육기본법 2005]]
[[교육기본법 2007]]
[[대한민국 민법]]
[[대한민국 상법]]
[[대한민국 연안관리법]]
[[이명박 특검법]]
[[대한민국 정부조직법 ]]
[[대한민국 민법]]
[[대한민국 상법]]
[[대한민국 연안관리법]]
[[이명박 특검법]]
[[대한민국 정부조직법]]
[[대한민국 헌법]]
[[대한민국 형법]]
[[대한민국 형법/5454]]</nowiki>
  • 다음을 실행한다:

C:\pwikipedia>replace.py -family:wikisource -lang:ko -file:re1.txt "분류:대한민국의 법령" "분류:대한민국의 법"

  • 그러면, 저 문서들에서만 "분류:대한민국의 법령" -> "분류:대한민국의 법"로 치환해준다. -- WonRyong (토론) 2008년 5월 15일 (목) 23:23 (UTC)

연습하기

[편집]
  • Wikisource:Sandbox 여기가 연습장입니다. 여기에 원하는 샘플 문장을 좀 복사 붙여넣기 합니다.
  • 다음을 실행합니다.

replace.py -family:wikisource -lang:ko -page:Wikisource:Sandbox "홍길동" "아무개"

  • 그러면, Wikisource:Sandbox 문서 내용 중에서 홍길동 부분이 아무개로 바뀝니다.
  • 연습장이기 때문에, 실수해도 어떤 문제도 생기지 않습니다. ^^ -- WonRyong (토론) 2008년 5월 15일 (목) 23:33 (UTC)

정규식 사용하기

[편집]
  • 정규식이라는 엄청난 기능이 있습니다.
  • Wikisource:Sandbox 여기가 연습장입니다. 여기에 다음을 복사, 붙여넣기 합니다:
{{msg:홍길동}} - {{msg:홍길동}}
{{홍동}},{{msg홍길동}}
{{sg:길동}}
{{msg:홍길동}}
  • 다음을 실행합니다:

replace.py -family:wikisource -lang:ko -page:Wikisource:Sandbox -regex "{{msg:(.*?)}}" "{{\1}}"

  • 그러면 Wikisource:Sandbox 문서 안에 있던 {{msg:홍길동}} 이 {{홍길동}}으로 바뀝니다.
  • 직접 해보세요. w:정규식은 엄청나게 치환기능을 강력하게 만들어 줍니다. ^^ -- WonRyong (토론) 2008년 5월 15일 (목) 23:41 (UTC)

정규식 예제 추가

[편집]
  • Replace.py는 문서에 텍스트를 추가하거나 덧붙이는 용도로 사용 가능하다(단, 변환된 텍스트는 새로 끼워 넣어진 새로운 줄에 있다)--221.144.238.115 (토론) 2011년 4월 17일 (일) 13:18 (KST)
   python replace.py -regex '(?ms)^(.*)$' "\1
    > [[Category:NewCat]]"
  • 무슨 말일까? 다음에 번역예정 -- WonRyong (토론) 2008년 5월 15일 (목) 23:54 (UTC)

vi 에디터 사용하세요

[편집]
  • 사용자:WonRyong/빔 사용법 여기에 빔(w:vim) 사용법을 자세하게 모으고 있습니다. 강력한 치환기능을 갖는 빔의 사용 숙지는, replace 봇의 사용에 많은 도움을 줄 것입니다. 둘 다 w:정규식을 사용하거든요. ^^ -- WonRyong (토론) 2008년 5월 16일 (금) 00:06 (UTC)

김소월 분류 추가

[편집]
  • 김소월의 시들에 분류:김소월이 추가되어 있지 않아서, 그것을 봇으로 전부 추가하려고 합니다.
  • 일단 연습장에서 다음을 추가하였습니다.
[[글쓴이:김소월|김소월]]
  • 그리고 다음의 명령어를 실행시켰습니다:

replace.py -family:wikisource -lang:ko -page:Wikisource:Sandbox "김소월" "분류:김소월\n김소월"

  • 성공!! ^^
  • 이제, 김소월에서 모든 문서목록을 C:\pywikipedia\re1.txt에 저장했습니다. UTF-8 형식
[[가는 길]]
[[가는 봄 삼월]]
[[가을 저녁에]]
...
  • 그리고 다음의 명령어를 실행시켰습니다:

replace.py -family:wikisource -lang:ko -file:re1.txt "김소월" "분류:김소월\n김소월"

  • 작업완료!! ^^ -- WonRyong (토론) 2008년 5월 16일 (금) 04:05 (UTC)

향가 분류 추가

[편집]

replace.py -family:wikisource -lang:ko -file:re1.txt "[[:분류:향가]]" "{{PD-Old}}\n[[:분류:향가]]"

향가들에 라이센스 틀을 붙였습니다. -- WonRyong (토론) 2008년 5월 16일 (금) 15:40 (UTC)

분류:김소월 붙이기

[편집]

빔 편집하기

[편집]

김소월 문서를 복사해서 빔 편집기에 붙입니다. http://www.vim.org/

# [[아무개]]
# [[홍길동]]

이런 식으로 되어 있습니다.

빔에서 : (콜론)을 누른 다음, 다음의 명령을 실행합니다.

:%s/^# //g

주의사항으로는, ::(콜론 두 번)이 되지 않게 하세요.

::%s/^# //g -> 에러남

:%s/^# //g -> 정상 작동함 ::(콜론 두 번)이 아니라 :(콜론 한 번) 입니다. ^^ 너무 친절한 설명!! ^^

그럼 이제

[[아무개]]
[[홍길동]]

이렇게 됩니다. 빔 편집기에서 전체 복사를 해서, 윈도우즈 메모장에 붙여넣습니다. 윈도우즈 메모장에서 C:\pywikipedia\re1.txt 파일에 UTF-8 형식으로 저장을 합니다.

치환봇 돌리기

[편집]

User:Wybot으로 아래 명령어를 실행하였습니다:

replace.py -family:wikisource -lang:ko -file:re1.txt "[[글쓴이:김소월|김소월]]" "[[:분류:김소월]]\n[[글쓴이:김소월|김소월]]"

김소월의 시에 분류:김소월을 붙였습니다.

향가에 라이센스 틀 붙이기

[편집]

카테고리봇 돌리기

[편집]

category.py listify -family:wikisource -lang:ko -recurse -overwrite

  • 아래와 같은 메시지가 나오면, "분류:향가"의 경우, 분류:를 빼고 향가만 입력합니다.

Please enter the name of the category to listify: 향가

Please enter the name of the list to create: User:WonRyong/category

빔 편집하기

[편집]

User:WonRyong/category 페이지에 모든 문서의 목록을 빔 편집기에 붙여넣고 다음을 실행합니다.

:%s/^*//g

그러면, User:WonRyong/category의 매 줄마다 맨 앞에 붙어있는 *가 모두 삭제됩니다.

그 결과를 전체 복사해서, C\pywikipedia\re1.txt 파일을 열어서 ctrl+s로 저장합니다.

이전에 UTF-8로 C\pywikipedia\re1.txt 파일을 생성해 놓았기 때문에, 다시 UTF-8로 설정할 필요없이, ctrl+s 한방이면 간단히 끝납니다.

치환봇 돌리기

[편집]

replace.py -family:wikisource -lang:ko -file:re1.txt "[[:분류:향가]]" "{{PD-Old}}\n[[:분류:향가]]"

향가들에 라이센스 틀을 붙였습니다. \n은 엔터키를 치라는 의미입니다.-- WonRyong (토론) 2008년 5월 16일 (금) 15:40 (UTC)

봇 도움말 목록

[편집]

더 보기

[편집]