Добавление подсписка в другой список в python - PullRequest
0 голосов
/ 02 сентября 2018
with open('LBP_for_paper.csv','r') as csvDataFile:
    datarows = csv.reader(csvDataFile, delimiter=',', quotechar='|')
    nofinding=[]
    rawrow=[]
    for row in datarows:
        if row[1]=='No Finding' and row[2]=='1':
            rawrow = list((row[0]+","+row[1]+","+row[2]+","+row[17]+","+row[18]))
            nofinding.append(rawrow)

    print(nofinding[:2])

Я читаю datarows из CSV-файла и хочу создать настраиваемый вложенный список на основе определенных столбцов. Я хочу это

лист ((строка [0] + " "+ строка [1] +", "+ строка [2] +", "+ строка [17] +"," + строка [18])) * +1005 *

возвращает список как

['00030805_000.png, No Finding, 1,34777,69373']

, который сохраняется в rawrow, а затем добавляется в больший список, то есть nofinding, но я получаю вывод как

[['0', '0', '0', '3', '0', '8', '0', '5', '', '0', '0' , '0', '.', 'p', 'n', 'g', ',', 'N', 'o', '', 'F', 'i', 'n', 'd', 'i', 'n' , 'г', ',', '1', ',', '3', '4', '7', '7', '7', ',', '6', '9', '3', '7 ',' 3 '], ['0', '0', '0', '3', '0', '8', '0', '4', '', '0', '0', '0' , '.', 'п', 'n', 'g', ',', 'N', 'o', '', 'F', 'i', 'n', 'd', 'i', 'n', 'g' , ',', «1», «,», «3», «5», «4», «0», «5», «,», «6», «3», «0», «8», «8 «]]

Желаемый выход

[['00030805_000.png, No Finding, 1,34777,69373'], ['00030804_000.png, No Нахождение, 1,35405,63088 ']]

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018
with open('LBP_for_paper.csv','r') as csvDataFile:
    datarows = csv.reader(csvDataFile, delimiter=',', quotechar='|')
    rawrow = []
    nofindings=[]
    for row in datarows:
        if row[1]=='No Finding' and row[2]=='1':
            rawrow = [''.join(row[row_index]) for row_index in [0, 1, 2, 17, 18] ]
            nofindings.append(rawrow)
    print(nofindings[:3])

Решил мои проблемы.

0 голосов
/ 02 сентября 2018

Ваша проблема в том, что rawrow = list((row[0]+","+row[1]+","+row[2]+","+row[17]+","+row[18])) превращает строку в список символов

если вы хотите оставить это как строку с разделителями-запятыми, замените эту строку следующим:

rawrow = row[0]+","+row[1]+","+row[2]+","+row[17]+","+row[18]

или более чисто:

rawrow = ",".join([row[row_index] for row_index in [0, 1, 2, 17, 18]])

Мне любопытно, почему вы хотите:

[ ['00030805_000.png,No Finding,1,34777,69373'], ['00030804_000.png,No Finding,1,35405,63088'] ]

Вместо этого:

[ ['00030805_000.png','No Finding',1,34777,69373], ['00030804_000.png','No Finding',1,35405,63088] ]

которого вы можете достичь с помощью следующего:

rawrow = []
for row_index in [0, 1, 2, 17, 18]:
    rawrow.append(row[row_index].split(","))

или в одну строку:

rawrow = [row[row_index].split(",") for row_index in [0, 1, 2, 17, 18]]

Кроме того, весь ваш код можно объединить следующим образом:

with open('LBP_for_paper.csv','r') as csvDataFile:
    datarows = csv.reader(csvDataFile, delimiter=',', quotechar='|')
    nofinding = [",".join([row[row_index] for row_index in [0, 1, 2, 17, 18]]) for row in datarows if row[1]=='No Finding' and row[2]=='1']
    print(nofinding[:2])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...