我试图创建一个程序,从批量粘贴中选择特定信息,提取相关信息,然后继续将所述信息粘贴到行中
下面是一些示例数据
1. Track1 03:01
VOC:PersonA
LYR:LyrcistA
COM:ComposerA
ARR:ArrangerA
ARR:ArrangerB
2. Track2 04:18
VOC:PersonB
VOC:PersonC
LYR:LyrcistA
LYR:LyrcistC
COM:ComposerA
ARR:ArrangerA
我希望有一个输出,其中Track1的相关数据分组在一行中,分号连接相同的信息,其他信息之间用“-”分隔
LyrcistA - ComposerA - ArrangerA; ArrangerB
LyrcistA; LyrcistC - ComposerA - ArrangerA
尽管我尽了最大的努力,我还是没有走多远
while True:
YodobashiData = input("")
SplitData = YodobashiData.splitlines();
返回以下内容
['1. Track1 03:01']
['VOC:PersonA ']
['LYR:LyrcistA']
['COM:ComposerA']
['ARR:ArrangerA']
['ARR:ArrangerB']
[]
['2. Track2 04:18']
['VOC:PersonB']
['VOC:PersonC']
['LYR:LyrcistA']
['LYR:LyrcistC']
['COM:ComposerA']
['ARR:ArrangerA']
虽然我现在所有的数据都在单独的列表中,但我不知道如何从我不需要的列表中识别和提取我需要的信息。 另外,我似乎需要使用while循环,否则它将只返回第一个列表,而不返回其他任何内容
下面是对你问题的另一个回答:
结果:
如果你真的想让所有人都在上面,你可以把打印标题信息的那行注释掉。如果要从用户提示符读取数据,只需将内置的
data
替换为data = input("")
假设您的数据是在名为
tracks.txt
的文件中指定的格式,则以下代码应该可以工作:唯一需要更改的是数据中的冒号字符-其中一些是ASCII冒号
:
,另一些是Unicode冒号:
,这将破坏正则表达式这里有一个不使用正则表达式的脚本
它假设标题行,并且只有标题行,总是以数字开头,并且标题行和信用额度的整体结构是一致的。空行将被忽略
轨迹数据的提取和格式化是分开处理的,因此更容易更改格式,或以其他方式使用提取的数据
输出:
相关问题 更多 >
编程相关推荐