IndexOutOfBound и хранение с разделением запятыми - PullRequest
0 голосов
/ 11 июня 2019

Если строка соответствует этому формату, например 'a,b,c,d' (где a, b, c, d - все int), или полностью пуста. Например:

179,170,271,83
null
143,406,299,44
145,403,299,44
142,404,299,44

31,450,337,36

null

90,269,242,32
87,266,244,35
null
272,251,223,119
27,40,316,10

Как мне сохранить значение a, b, c, d?

Я пытался использовать разделенную запятую и проверять наличие пустой строки, но это не помогает

if string:
      txt = string.split(',')
      height = txt[0]
      left = txt[1]
      top = txt[2]
      width = txt[3]
else:
      height = ""
      left = ""
      top = ""
      width = ""

Ответы [ 2 ]

2 голосов
/ 11 июня 2019

В Python обычно используется try / except в подобных случаях, а не сначала тестирование.Это часто называют просьбой о прощении, а не разрешением .Для этого вы можете обернуть ожидаемый регистр в try и установить крайний регистр в исключение:

def printDims(s):
    try:
        height, left, top, width = s.split(',')
    except ValueError:
         height, left, top, width = [''] * 4
    finally:
        print(height, left, top, width)


printDims("1,2,3,4") # prints 1, 2, 3, 4
printDims("")        # prints the empty strings
0 голосов
/ 11 июня 2019

Проверьте длину txt:

if string:
    txt = string.split(',')
    if len(txt) == 4:
        height = txt[0]
        left = txt[1]
        top = txt[2]
        width = txt[3]
    else:
        height = ""
        left = ""
        top = ""
        width = ""
else:
    height = ""
    left = ""
    top = ""
    width = ""
...