2010-03-16 2 views
0

: 정규화 책 제목 - 파이썬 내가 책 제목의 목록을

  • "호빗 : 70 주년 기념 에디션"
  • "호빗"
  • "호빗 (일러스트/콜렉터 에디션) 다시 또는이와 뒤로 "
  • "호빗 :가 다시 돌아] "
  • "호빗 선물 세트 "

등등 ...


나는 어떻게 든 제목을 정규화하는 경우, 각 버전은 참조 무슨 책을 알 수있는 자동화 된 방법을 구현하기 쉬울 것이라고 생각했다.

normalised = ''.join([char for char in title 
         if char in (string.ascii_letters + string.digits)]) 

또는

normalised = '' 
for char in title: 
    if char in ':/()|': 
    break 
    normalised += char 
return normalised 

그러나 제목에 특수 문자를 포함 할 수 있으며, 버전은 기본적으로 매우 다른 제목 레이아웃을 가질 수 분명히 그들이 의도 한대로 작동하지 않습니다.


도움을 주시면 대단히 감사하겠습니다. 고마워요 :)

+1

을 해야 할 것? 퍼지 검색이 도움이 될 수 있습니까? – voyager

+0

@voyager 책의 원래 제목을 추출하거나 적어도 적절한 제목과 일치 시키려합니다. 예 : ** Lorem 도서 : 2 부 [Special Collector 's Edition] ** Lorem 북 : 2 부 ** – RadiantHex

답변

1

귀하의 데이터에 따라 다릅니다. 예를 들어, 간단한 정규화 솔루션은 다음과 같습니다.

import re 

book_normalized = re.sub(r':.*|\[.*?\]|\(.*?\)|\{.*?\}', '', book_name).strip() 

모든 예제의 경우 "호빗"이 반환됩니다. 그것이하는 것은 첫 콜론 뒤에 오는 모든 것을 없애거나 앞뒤 공백뿐만 아니라 대괄호 (일반, 정사각형, 곱슬)로 된 것을 제거하는 것입니다.

그러나 실제 도서 이름에 콜론이나 괄호로 묶인 부분이 있기 때문에 일반적인 경우에는 적절하지 않습니다. 예 : 계열의 이름, 콜론, 시리즈의 특정 항목의 이름이 뒤 따른다.

+0

@ Max 덕분에 답을 얻을 수있었습니다! ** 시리즈 번호 **를 가지고있는 책에 대해서도 당신이 옳았습니다. 그것은 제가 직면하고있는 혼란의 일부이기도합니다. – RadiantHex

1
나는 당신이 시작점, 요구하고 무엇을 할 수 있다고 생각 타사 웹 서비스와 같은 librarything을 사용하는 것이 좋습니다 것

, 자신의 문서를 참조하십시오 당신이 원하는 작업

http://www.librarything.com/services/rest/documentation/1.0/librarything.ck.getwork.php

+0

@Tom 감사합니다. 그것은 아주 유용했습니다! – RadiantHex

+0

@Tom : librarything은 불행히도 실패 무료가 아닙니다 :) – RadiantHex