拆分字符串然后迭代该列表

时间:2018-01-27 19:27:33

标签: python

基本上我应该做的是制作一个程序,它可以获得半个音阶线,并输出几步之遥的电源线。我得到了它的工作,但我不知道我需要为我的string_to_list函数做什么,我应该将字符串分割为传递给函数然后遍历我分成的列表创建元组。

如果有人可以提供帮助,我真的很感激。

def string_to_list(chords_str):
    return chords_str.split()

2 个答案:

答案 0 :(得分:0)

如果我正确地读你,我相信这样的代码会让你得到你想要的东西:

chord_str = 'D D#m Fsus2 Bbmaj7'
test = chord_str.split(' ')
new_list_of_tuples = []
for chord in test:
  if '#' in chord or 'b' in chord:
    new_list_of_tuples.append((chord[:2], chord[2:]))
  else:
    new_list_of_tuples.append((chord[:1], chord[1:]))

print(new_list_of_tuples)

[('D', ''), ('D#', 'm'), ('F', 'sus2'), ('Bb', 'maj7')]

您检查和弦名称中是否有尖锐或平坦以调整分割字符串的位置,然后将其余字符串添加到元组中。

答案 1 :(得分:0)

希望这能解决您的问题: 在你的转置函数中,我看到你正在创建一个我认为是根列表的比例。

所以我传递chors字符串并缩放到string_to_list函数。 然后对于每个和弦,如果它以一个根开始分裂,根上的和弦给你两个项目1.根,2。变化,因此你可以形成元组。

def string_to_list(chords_str, scale):
    tuple_list = []
    chord_list = chords_str.split()
    for chord in chord_list:
        for root in scale:
            if chord.startswith('root'):
                value = (root, chord.split(root)[1])
                tuple_list.append(value)
                break

    return tuple_list