所以我做了一个程序,它需要一个吉他标签,并得到烦恼的数字,运行它通过字典得到的笔记和搜索它在英国笔记字典。
但我的问题是如果我在一个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/