Составление списка из списка списков - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть список списков ниже

[['Afghanistan,2.66171813,7.460143566,0.490880072,52.33952713,0.427010864,-0.106340349,0.261178523'], ['Albania,4.639548302,9.373718262,0.637698293,69.05165863,0.74961102,-0.035140377,0.457737535']]

Я хочу создать новый список только с названиями стран.

Итак

[Afghanistan, Albania]

В настоящее время используется этот код.

with open(fileName, "r") as f:
    _= next(f)
    row_lst = f.read().split()
    countryLst = [[i] for i in row_lst]

Ответы [ 2 ]

1 голос
/ 19 сентября 2019

Попробуйте, используя split(',') в качестве первого элемента в list of list, равном string, разделенном comma.

>>> lst = [['Afghanistan,2.66171813,7.460143566,0.490880072,52.33952713,0.427010864,-0.106340349,0.261178523'], ['Albania,4.639548302,9.373718262,0.637698293,69.05165863,0.74961102,-0.035140377,0.457737535']]

Вывод:

>>> [el[0].split(',')[0] for el in lst]                       
['Afghanistan', 'Albania']

Объяснение:

# el[0] gives the first element in you list which a string.
# .split(',') returns a list of elements after spliting by `,`
# [0] finally selecting your first element as required.

Правка-1:

Использование regex,

pattern = r'([a-zA-Z]+)'
new_lst = []
for el in lst:
    new_lst+=re.findall(pattern, el[0])

>>> new_lst     # output          
['Afghanistan', 'Albania']
0 голосов
/ 19 сентября 2019

Похоже на файл CSV.Используйте модуль csv

Пример:

import csv

with open(fileName, "r") as f:
   reader = csv.reader(f)
   next(reader) #Skip header
   country = [row[0] for row in reader]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...