在python中拆分和分离

yah*_*v10 0 python algorithm

我是Python新手,我想知道如何用逗号(,)和冒号分割(:).我正在尝试加油站问题,我想从文本文件中读取这样的内容:

1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8
Run Code Online (Sandbox Code Playgroud)

我还想打开并从文件中读取这些数据并将其存储在链表中.

到现在为止我做了这个:

def GasStation(strArr):
    strArr = []

    f = open('Details.txt', 'r')
    for line in f:
        strArr.append(line)

    amount, tank = int(strArr[0]),0
    stations = [amount.split(":") for i in (strArr[1:] + strArr[1:-1])]
    for curr in range(start, start+amount):
        tank = tank + int(stations[curr][0]) - int(stations[curr][1])
    if tank < 0: sys.exit()
    if tank >= 0: return start+1
    else: tank = 0
    return "not"
Run Code Online (Sandbox Code Playgroud)

我也想打印作为答案的索引.

请帮帮我,我不明白为什么不给我打印答案.

谢谢.

ozg*_*gur 5

假设你的问题是如何在给定的顺序通过拆分,然后:,你可以使用列表理解:

>>> numbers = '1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8'
>>> pairs = [pairs.split(':') for pairs in numbers.split(',')]
>>> print pairs
[['1', '1'],
 ['2', '2'],
 ['3', '3'],
 ['4', '4'],
 ['5', '5'],
 ['6', '6'],
 ['7', '7'],
 ['8', '8']]
Run Code Online (Sandbox Code Playgroud)

如果您想要展平列表,可以使用itertools.chain.from_iterable:

>>> import itertools
>>> print list(itertools.chain.from_iterable(pairs))
>>> ['1', '1', '2', '2', '3', '3', '4', '4', '5', '5', '6', '6', '7', '7', '8', '8']
Run Code Online (Sandbox Code Playgroud)

为了能够回答您的其他问题,我们需要了解您的意思tank,amount并且stations.