Разделение строки в 2d массив с использованием двух разных разбиений - PullRequest
0 голосов
/ 14 апреля 2019

Я пытаюсь ввести значения в CSV, используя 2d массив. У меня есть строка, которая разделена ',', чтобы отделить значения и ';' отделить каждый ряд.

строка ниже;

text = 536924636,www.microsoft.com,http://www.microsoft.com/pkiops/crl/MicW;536924733,www.microsoft.com,http://www.microsoft.com/pkiops/certs/Mi;536925898,crl.microsoft.com,http://crl.microsoft.com/pki/crl/product;

Я хочу иметь возможность разбивать строки на 2d массив, как это

arr = reg.split([','][';'])

Так, чтобы это закончилось вот так;

arr =[ 
['536924636','www.microsoft.com','http://www.microsoft.com/pkiops/crl/MicW'],
['536924733','www.microsoft.com','http://www.microsoft.com/pkiops/certs/Mi'],
['536924636','www.microsoft.com','http://www.microsoft.com/pkiops/crl/MicW']]

но когда я пытаюсь это сделать, я получаю следующую ошибку:

  arr = reg.split([','][';'])
TypeError: list indices must be integers or slices, not str

Может кто-нибудь помочь мне достичь этого?

Спасибо

Ответы [ 3 ]

0 голосов
/ 14 апреля 2019

Функция split() разбивает одну строку на список один . Вы не можете заставить его создать два измерения, передав ему два параметра вместо одного.

Но вы можете вызвать его дважды, один раз для каждого разделителя:

>>> text = "536924636,www.microsoft.com,http://www.microsoft.com/pkiops/crl/MicW;536924733,www.microsoft.com,http://www.microsoft.com/pkiops/certs/Mi;536925898,crl.microsoft.com,http://crl.microsoft.com/pki/crl/product;"
>>> [r.split(",") for r in [r for r in text.split(";")]]
[
['536924636', 'www.microsoft.com', 'http://www.microsoft.com/pkiops/crl/MicW'], 
['536924733', 'www.microsoft.com', 'http://www.microsoft.com/pkiops/certs/Mi'], 
['536925898', 'crl.microsoft.com', 'http://crl.microsoft.com/pki/crl/product'], 
['']
]
0 голосов
/ 14 апреля 2019
x = str(input())
arr  = x.split(";")
finalArr = []
for items in arr:
    arr2 = []
    arr2.append(items)
    finalArr.append(arr2)
print(finalArr)

Попробуйте это.Я надеюсь, что это то, что вы ищете.

0 голосов
/ 14 апреля 2019

Простой подход может быть

arr = [i.split(',') for i in text.split(';')]
...