2013-02-06 3 views
2

저는 Python을 처음 접했지만 사용하려는 기능에 대한 스크립팅을 조금 해보고 싶습니다. 팀 포트리스 2의 콘솔에서 "상태"로 입력 한 텍스트가 있습니다. 제가 성취하고자하는 것은, 아래의이 텍스트를 텍스트로 변환하고 싶습니다. STEAM_X:X:XXXXXXXX은 Steam64 ID입니다.Python에서 텍스트 조각 지우기

# userid name    uniqueid   connected ping loss state 
#  31 "Atonement -Ai-" STEAM_0:1:27464943 00:48  103 0 active 
#  10 "?loop?"  STEAM_0:0:31072991 40:48  62 0 active 
#  11 "爱 -Ai-"   STEAM_0:0:41992530 40:46  68 0 active 
#  12 "MrKateUpton -Ai-" STEAM_0:1:10894538 40:25  81 0 active 
#  13 "Tacet -Ai-"  STEAM_0:1:52131782 39:59  83 0 active 
#  14 "CottonBonbon-Ai-" STEAM_0:1:47812003 39:39  51 0 active 
#  15 "belt -Ai-"   STEAM_0:1:4941202 38:43  123 0 active 
#  16 "boutros :3"  STEAM_0:0:32271324 38:21  65 0 active 
#  17 "[tilt] Xikkari" STEAM_0:1:41148798 38:14  92 0 active 
#  24 "ElenaWitch"  STEAM_0:0:17495028 31:30  73 0 active 
#  19 "[tilt] Batcan #boutros" STEAM_0:1:41205650 38:10 63 0 active 
#  20 "[?l??]whatupmydiggas" STEAM_0:1:50559125 37:58 112 0 active 
#  21 "[tilt] musicman" STEAM_0:1:37758467 37:31  89 0 active 
#  22 "Jack Frost"  STEAM_0:0:24206189 37:28  90 0 active 
#  28 "[tilt-sub]deaf ears #best safet" STEAM_0:1:29612138 19:05 94 0 active 
#  25 "? notez ?ai" STEAM_0:1:29663879 31:23  113 0 active 
#  27 "-Ai- Lord English" STEAM_0:1:44114633 24:08  116 0 active 
#  29 "1.prototypes"  STEAM_0:0:42256202 17:41  83 0 active 
#  30 "SourceTV // name for SourceTV" BOT      active 
#  32 "PUT ME IN COACH" STEAM_0:1:48004781 00:36  173 0 spawning 

파이썬에는 다음 알고리즘을 수행하는 기본 제공 함수가 있습니까?

For all that is not (!) Steam_X:X:XXXXXXXX, delete/remove. 

나는 인터넷 검색의 공정한 금액을했을, 그러나 아무것도 정말 특정 얻을 수 없습니다. 파이썬 함수가 내장되어있는 사람이 있으면 코딩을 시작해 주셔서 감사드립니다.

P. 출력은 다음과 같습니다.

STEAM_0:1:27464943 
STEAM_0:0:31072991 
STEAM_0:1:10894538 
etc 
etc 

답변

4

쉬운 정규식의 경우와 같습니다. 그들은 항상 그런 자리하고 가정 :

>>> import re 

>>> with open('/tmp/spam.txt') as f: 
... for steam64id in re.findall(r'STEAM_\d:\d:\d+', f.read()): 
...  print steam64id 
... 
STEAM_0:1:27464943 
STEAM_0:0:31072991 
STEAM_0:0:41992530 
STEAM_0:1:10894538 
STEAM_0:1:52131782 
STEAM_0:1:47812003 
STEAM_0:1:4941202 
STEAM_0:0:32271324 
STEAM_0:1:41148798 
STEAM_0:0:17495028 
STEAM_0:1:41205650 
STEAM_0:1:50559125 
STEAM_0:1:37758467 
STEAM_0:0:24206189 
STEAM_0:1:29612138 
STEAM_0:1:29663879 
STEAM_0:1:44114633 
STEAM_0:0:42256202 
STEAM_0:1:48004781 

일반적인 조리법을 선을 제거하면 원본 파일에서 삭제,하지만 새 파일로을 유지 당신이 하려는 라인을 인쇄 (그리고하지 않는 것입니다 , 선택적으로 처리가 성공적이면 원본 파일을 덮어 씁니다).

+0

안녕하세요. 빠른 답변 감사합니다! /tmp/spam.txt는 임시 파일입니까, 아니면이 스크립트가 읽는 파일 확장명입니까? – theGreenCabbage

+0

나는 당신의 문자열을'/ tmp/spam.txt'라는 파일에 복사했다. 물론 파일 이름이 다를 수도 있습니다 (또는 파일을 읽을 필요가 없을 수도 있음) – wim

+0

여기에는 'STEAM_0 : 0 : 12345678'이라는 사용자가 없다고 가정합니다 (예 : 이상한 악의적 인 사용자) – nneonneo