规范化书名Python

2024-10-03 02:42:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个书名清单:

  • 《霍比特人:70周年纪念版》
  • “霍比特人”
  • “《霍比特人》(插图版/收藏品版)[来回]
  • “霍比特人:或者,来回”
  • “霍比特人:礼包”

等等。。。在


我认为,如果我以某种方式规范化标题,那么实现一种自动化的方式来知道每一版本所指的书会更容易。在

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

或者

^{pr2}$

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


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


Tags: in版本标题forstring方式规范化收藏品
2条回答

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

import re

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

这将返回所有例子的“霍比特人”。它所做的是删除第一个冒号之后的任何内容,或方括号中的任何内容(普通、方形、卷曲)以及前导空格和尾随空格。在

然而,在一般情况下,这不是一个很好的解决方案,因为有些书在实际书名中有冒号或括号部分。E、 g.序列的名称,后跟冒号,然后是序列的特定项的名称。在

我建议使用第三方web服务,例如librarything,我相信它可以满足您的要求,首先,请参阅他们的文档:

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

相关问题 更多 >