擅长:python、mysql、java
<p>您可以尝试在<code>Song</code>模型中引入一个附加字段,用于存储歌曲名称的<em>标准化</em>版本。在存储新歌之前,您将检查规范化名称是否与数据库中任何现有歌曲的规范化名称匹配。你知道吗</p>
<p>标准化可以通过以下方法的组合来实现</p>
<ul>
<li>降低歌曲名称的大小写</li>
<li>用(单个)下划线替换空格</li>
<li>用下划线替换连字符</li>
<li>删除任何特殊字符(方括号、圆括号等)</li>
<li>用下划线替换点。你知道吗</li>
</ul>
<p>这将消除大量的重复项。你知道吗</p>
<p>上述操作的代码示例:</p>
<ul>
<li><code>song_name.lower()</code></li>
<li><code>re.sub(' +', '_', song_name)</code></li>
<li><code>re.sub('-+', '_', song_name)</code></li>
<li><code>re.sub('[\(\)\[\]]', '', song_name)</code></li>
<li><code>re.sub('\.+', '_', song_name)</code></li>
</ul>
<p>用下划线替换空格/连字符/点的操作当然可以合并。你知道吗</p>