我正在尝试在Python中对字符串进行比较.我的字符串包含可以通过多种不同方式构建的标题:
'Title'
'Title: Subtitle'
'Title - Subtitle'
'Title, Subtitle'
'Title Subtitle'
Run Code Online (Sandbox Code Playgroud)
是否有可能在Python中进行相似性比较,以便它可以确定match('Title: Subtitle', 'Title - Subtitle') = True?(或者它会被建造)
基本上我正在试图确定它们是否是相同的标题,即使分裂是不同的.
if 'Title: Subtitle' == 'Title - Subtitle':
match = 'True'
else:
match = 'False'
Run Code Online (Sandbox Code Playgroud)
还有一些可能存储为The Title: The Subtitle或者Title, The: Subtitle, The虽然我认为可能会增加一些复杂性,我可能会通过重建字符串来解决.
我在 python 中有许多变量,我想用它们来为这些变量生成一个唯一的 ID(但该 ID 总是为那些相同的匹配变量生成)。
我曾经.encode('hex','strict')制作过一个似乎有效的 ID ,但是输出值很长。有没有办法使用变量生成更短的ID?
myname = 'Midavalo'
mydate = '5 July 2017'
mytime = '8:19am'
codec = 'hex'
print "{}{}{}".format(myname, mydate, mytime).encode(codec,'strict')
Run Code Online (Sandbox Code Playgroud)
这输出
4d69646176616c6f35204a756c792032303137383a3139616d
Run Code Online (Sandbox Code Playgroud)
我意识到hex它可能取决于三个变量的长度,所以我想知道是否有另一个编解码器可以/将产生更短的值而不排除任何变量?
到目前为止,我已经测试了base64, bz2, hex, quopri, uu,zip从7.8.4 开始。Python 特定编码,但我不确定如何在不删除变量的情况下获得这些编码以生成更短的值。
有没有我可以使用的另一种编解码器,或者一种方法来缩短其中任何一个的值而不消除唯一性,或者甚至是一种完全不同的方式来产生我需要的东西?
我要做的就是生成一个 ID,以便在将这些行加载到数据库中时识别它们。如果相同的值已存在,则不会在数据库中创建新行。没有安全要求,只有唯一的 ID。这些值是在其他地方生成到 python 中的,所以我不能只对这些值使用数据库发布的 ID。
我编写了一个小的 python 脚本来确定记录的年龄以及它是否超过一周。我通过从 中减去记录日期来做到这一点now()。该记录将日期2016-02-23 09:01:22作为日期时间返回。
now = datetime.datetime.now()
age = now - recordDate
print age
Run Code Online (Sandbox Code Playgroud)
这将结果打印为 71 days, 23:56:07.156000
有没有比我的 hack 解决方案更“pythonic”的方法来让它只输出几天(而不是几个小时等)
print str(age).split(',',1)[0]
Run Code Online (Sandbox Code Playgroud)
将结果打印为71 days?