回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<div>
</div>
<p>我有一个字符串列表,包含用拉丁数字表示的和弦,如下所示:</p>
<pre><code>['ii7', 'vi7', 'V', 'IVadd9', 'Iadd9', 'V', 'IVmaj7', 'ii7', 'vi7', 'V', 'IVadd9', 'Iadd9', 'V', 'IVmaj7']
</code></pre>
<p>我想把这些字符串分成3个子列表,如下所示:</p>
<pre><code>numerals = ['ii', 'vi', 'V', 'IV', 'I', 'V', 'IV', 'ii', 'vi', 'V', 'IV', 'I', 'V', 'IV']
chord_type=['min', 'min', 'maj', 'maj', 'maj', 'maj','maj', 'min', 'min', 'maj', 'maj', 'maj', 'maj','maj']
extentions=['7','7','', 'add9','add9','','7','7','7','','add9','add9','','7']
</code></pre>
<p>(如您所见,大写罗马数字对应于和弦类型中的“maj”,非大写字母对应于“min”。)</p>
<p>在我的例子中,所有可能的罗马数字:</p>
<pre><code>i, ii, iii, iv, v, vi, vii, I, II, III, IV, V, VI, VII
</code></pre>
<p>注意,我们不需要<code>M</code>、<code>C</code>、<code>L</code>、<code>X</code></p>
<p>我知道我可以从Python中的字符串中提取或拆分数字,如<a href="https://stackoverflow.com/questions/26825729/extract-number-from-string-in-python">here</a>所述,但如何提取罗马数字呢</p>
<p>我曾想过使用类似于<em>match</em>regex的东西,但我对如何定义这7个罗马数字感到困惑,因为这些字符可能会再次出现在字符串中</p>