필자는 Python을 처음 접했을 때 독점적 인 마크 업 형식간에 변환하는 일련의 스크립트를 작성하고 있습니다. 내가 파일을 통해 라인으로 라인을 반복 한 후 기본적으로 기본적으로 4 종류로 분류 그 대체의 큰 번호 (100-200)를하고 있어요 :Python에서 많은 수의 검색/대체를 효율적으로 수행 할 수 있습니까?
line = line.replace("-","<EMDASH>") # Replace single character with tag
line = line.replace("<\\@>","@") # tag with single character
line = line.replace("<\\n>","") # remove tag
line = line.replace("\xe1","•") # replace non-ascii character with entity
str.replace() 함수는 (매우 효율적인 것 같다 프로파일 링 출력을 조사 할 때 숫자가 상당히 낮습니다). 그러나 이것을 수행하는 더 좋은 방법이 있습니까? 함수로 인수로 re.sub() 메서드를 본 적이 있지만 이것이 더 좋을지 확실하지 않습니까? 파이썬이 내부적으로 어떤 종류의 최적화를하는지에 달려 있다고 생각합니다. 별로 도움이되지 않을 수도있는 큰 dict을 만들기 전에 몇 가지 조언을 요청할 것입니다.
또한 HTML (HTML과 비슷하지만 HTML이 아닌) 태그를 파싱합니다. ~ 100 검색/여기 효율성
m = re.findall('(<[^>]+>)',line)
for tag in m:
tag_new = re.sub("\*t\([^\)]*\)","",tag)
tag_new = re.sub("\*p\([^\)]*\)","",tag_new)
# do many more searches...
if tag != tag_new:
line = line.replace(tag,tag_new,1) # potentially problematic
어떤 생각 : 예컨대,뿐만 아니라 일치하는 태그 내에서 (주로 경기를 제거)를 대체 한 후 않습니다
m = re.findall('(<[^>]+>)',line)
그리고 :이 같은 태그를 식별?
감사합니다.