规范化书名 - Python

时间:2010-03-16 22:51:09

标签: python django string data-cleansing

我有一系列书籍标题:

  • “霍比特人: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

但显然它们没有按预期工作,因为标题可以包含特殊字符,版本基本上可以有非常不同的标题布局。


非常感谢帮助!谢谢:))

2 个答案:

答案 0 :(得分:1)

完全取决于您的数据。对于您给出的示例,一个简单的规范化解决方案可能是:

import re

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

这将返回所有示例的“霍比特人”。它的作用是删除包括第一个冒号后的任何内容,或括号中的任何内容(正常,方形,卷曲)以及前导和尾随空格。

然而,在一般情况下,这不是一个非常好的解决方案,因为有些书籍在实际书名中有冒号或括号部分。例如。系列的名称,后跟冒号,后跟系列的特定条目的名称。

答案 1 :(得分:1)

我建议使用第三方网络服务,例如librarything我相信可以做你想要的,作为起点,请参阅他们的文档:

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