所以我做了一个程序,它需要一个吉他标签,并得到烦恼的数字,运行它通过字典得到的笔记和搜索它在英国笔记字典。
但我的问题是如果我在一个txt文件中有一个标签,例如:

|-----11----------11----------11------11--13--11----------11----------11----------11------11--13--11---------------|
|-------13----------13----------13--------------------------13----------13----------13-----------------------------|
|--13-----13---13-----13---12-----12---------------12-13------13---13-----13---12-----12--------------------------|
|------------------------------------------------------------------------------------------------------------------|
|------------------------------------------------------------------------------------------------------------------|
|------------------------------------------------------------------------------------------------------------------|

所以我想要的是打开txt文件,在每一个数字前面加上一个字母和这一行对应。所以第一行的每个数字都会说a“e”,第二行是“B”,第三行是“G”
按顺序排列,最终结果为:G13 e11 B13 G13等。。。
有什么想法吗?

最佳答案

对于解析,请编写一个函数,该函数包含一行制表符和一个注释,该函数将产生与位置相关的微动:

import re

def parse_line(line, note):
    fret_pattern = re.compile(r'\d+')
    for match in fret_pattern.finditer(line):
        yield (match.start(), ''.join((note, match.group(0))))

对于第一行|-----11--,这将产生(6, "e11")。以后可以使用元组对所有字符串上的所有注释进行排序。
现在只要open()文件,读入前6行并给出正确的名称:
import itertools

notes = ['e', 'B', 'G', 'D', 'A', 'E']
with open('tab.txt') as fp:
    # Read-in 6 lines
    lines = itertools.islice(fp, 0, 6)

    # Holds all the notes.
    frets = []

    # Process the lines, append all notes to frets.
    for note, line in itertools.izip(notes, lines):
       frets.extend(parse_line(line, note))

    # Sort the frets by position.
    frets.sort()

    # Drop the positions.
    frets = [fret for pos, fret in frets]

关于python - 吉他选项卡到uke选项卡程序帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7117515/

10-16 03:14