如何将特殊格式的文本组织到列表中(在python上)

2024-10-03 13:30:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有航班代码的数据。 它有很多这样的字符串:

routing = 'PBI-FLL/FMY/JAX/MIA/ORL-PNS/TPA-SRQ-CLE/CHI/HOU/WAS-DEN-ELP' 

我需要得到如下字符串的列表:

routinglist =  [['PBI'], ['FLL','FMY','JAX','MIA','ORL'], ['PNS','TPA'], ['SRQ'], ['CLE','CHI','HOU','WAS'], ['DEN']]

我写了这个代码,但它是复杂的,不能按需要工作

routingrules = 'PBI-FLL/FMY/JAX/MIA/ORL-PNS/TPA-SRQ-CLE/CHI/HOU/WAS-DEN-ELP' 
airports = []   
nn = 0
few = ''
airportcount = 0

for simvol in routingrules:
    if (nn) % 4 == 0:
        previous = routingrules[nn:nn+3]
        if routingrules[nn+3:nn+4] == '/':
            few = few + previous + "1,2"

        elif routingrules[nn+3:nn+4] == '-':
            if few != '':
                airports.append([few + previous])
                airportcount = airportcount+1
                few = ''                
            else:
                airports.append([previous])
                airportcount = airportcount+1
        else:
            if few != '':
                airports.append([few + previous])
                airportcount = airportcount+1
                few = ''    

        nn = nn+1
    nn = nn+1 

print airports

它打印出来了

[['PBI'], ['FLL1,2FMY1,2JAX1,2MIA1,2ORL'], ['PNS1,2TPA'], ['SRQ'], ['CLE1,2CHI1,2HOU1,2WAS'], ['DEN']]

Tags: ifnnairportsjaxorlpreviousfewmia
2条回答

-上拆分,然后在/上拆分每个组:

[r.split('/') for r in routing.split('-')]

这将输出:

>>> routing = 'PBI-FLL/FMY/JAX/MIA/ORL-PNS/TPA-SRQ-CLE/CHI/HOU/WAS-DEN-ELP' 
>>> [r.split('/') for r in routing.split('-')]
[['PBI'], ['FLL', 'FMY', 'JAX', 'MIA', 'ORL'], ['PNS', 'TPA'], ['SRQ'], ['CLE', 'CHI', 'HOU', 'WAS'], ['DEN'], ['ELP']]

与您的示例相比,这是结尾处的一个额外的['ELP']条目,但我认为这是一个疏忽。很容易再把它去掉。你知道吗

尽管对这个问题来说可能有点过分,^{}在这里工作得很好。你知道吗

routing = 'PBI-FLL/FMY/JAX/MIA/ORL-PNS/TPA-SRQ-CLE/CHI/HOU/WAS-DEN-ELP' 

from pyparsing import *
block   = Group(delimitedList(Word(alphas), '/'))
grammar = Group(delimitedList(block, '-'))

print grammar.parseString(routing)

印刷品:

[[['PBI'], ['FLL', 'FMY', 'JAX', 'MIA', 'ORL'], ['PNS', 'TPA'], ['SRQ'], ['CLE', 'CHI', 'HOU', 'WAS'], ['DEN'], ['ELP']]]

当你想扩展语法时,这里的优势就来了。通常这些问题一开始很简单,随着时间的推移变得越来越复杂,这里将语法与解析分离是很有用的。你知道吗

相关问题 更多 >