我有一系列书籍标题:
依旧......
我认为如果我以某种方式对标题进行标准化,那么实现一种自动方式来了解每个版本所指的书籍会更容易。
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
但显然它们没有按预期工作,因为标题可以包含特殊字符,版本基本上可以有非常不同的标题布局。
非常感谢帮助!谢谢:))
答案 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