2011-08-01 4 views
0

그래서 alt 태그, title tage, link text ... 등의 다양한 위치에 대문자로 된 문자열이있는 html 문서가 있습니다.대문자 용 파이썬 검색 HTML 문서

<li><a title='BUY FOOD' href="http://www.example.com/food.html'>BUY FOOD</a></li> 

첫 번째 글자를 제외한 모든 글자를 소문자 대체로해야합니다. 좋아요 :

<li><a title='Buy Food' href="http://www.example.com/food.html'>Buy Food</a></li> 

이제 파이썬이나 정규식으로 어떻게 할 수 있습니까? 나는 코다 편집장이 이런 일을 할 수 있다고 들었다. 하지만 이런 식으로하는 방법에 대한 문서를 찾을 수없는 것 같습니다.

+0

같은 문제의 HTML과 정규식을 인용 읽은 후, 나는 http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-이에 연결해야 자체 포함 태그 – GaretJax

+0

http://www.codinghorror.com/blog/2009/11/parsing-html-the-cthulhu-way.html – Paul

답변

0

아름다운 수프를 사용하여 HTML을 태그 트리로 구문 분석 한 다음 태그 및 본문 텍스트 트리를 이동하고 제목 대/소문자로 변경하는 파이썬 코드를 작성하는 것이 좋습니다. 당신이 할 수있는 정규 표현식을 사용할 수 있지만 파이썬은 내장 된 문자열 메서드가 그 그것을 할 것입니다 : 모든 모자있는 문자열과 일치하는 패턴을해야하는 경우

"BUY FOOD".title() # returns "Buy Food" 

, 당신이 사용하는 것이 좋습니다 : "[^a-z]*[A-Z][^a-z]*"

이것은 "소문자 이외의 문자는 0 개 이상, 그 다음 하나는 대문자, 그리고 소문자 이외의 문자는 0 개 이상"을 의미합니다.

이 패턴은 "BUY 99 BEERS"와 정확하게 일치합니다. 하나의 대문자 문자도 없기 때문에 "매우 조용하다"와 일치하지 않을 것이다.

P. 실제로 함수를 re.sub()에 전달할 수 있으므로 필요한 경우 잠재적으로 미친 강력한 처리를 수행 할 수 있습니다. 귀하의 경우에는 파이썬의 .title() 메서드가이를 처리 할 것이라고 생각하지만, 여기에 함수를 전달하는 방법에 대한 정보가있는 다른 답변이 있습니다.

How to capitalize the first letter of each word in a string (Python)?

0

BeautifulSoup과 같은 HTML 파서가 필요하다고 생각합니다. 나머지는 세부 사항입니다.

+0

나는 BeauitfulSoup를 사용해 왔습니다. 하지만 정규 표현식을 얻을 수없는 것 같습니다. – hackthisjay

0

완전 자동 편집이 좋지 않은 예외가있을 수 있지만 정규식 편집기를 사용하면/[A-Z] [A-Z] + /를 검색하여 직접 교체 할 수 있습니다.