Как распределить элементы, разделенные запятыми, чтобы сформировать список в python - PullRequest
0 голосов
/ 07 мая 2020

Как извлечь / разделить многострочный комментарий для создания нового списка

clientInfo="""James,Jose,664 New Avenue,New Orleans,Orleans,LA,8/27/200,123,jjose@gmail.com,;
  Shenna,Laureles, 288 Livinghood Heights,Brighton,Livingston,MI,2/19/75,laureles9219@yahoo.com,;
  """
 into this kind of list

 f_name = ["james","sheena"]
 l_name = ["jose","Laureles"]
 strt = ["664 New Avenue","288 Livinghood Heights"]
 cty = ["New Orleans","Brighton"]
 state = ["New Orleans","Livingston"]

Ответы [ 3 ]

1 голос
/ 07 мая 2020

Вы можете попробовать:

clientData = """James,Jose,664 New Avenue,New Orleans,Orleans,LA,8/27/200,123,jjose@gmail.com,;
  Shenna,Laureles, 288 Livinghood Heights,Brighton,Livingston,MI,2/19/75,laureles9219@yahoo.com,;
  """
data = clientData.split(";\n")

f_name = []
l_name = []
strt = []
cty = []
state = []

for data_line in data:
    data_line = data_line.strip()
    if len(data_line) >= 5:
        line_info = data_line.split(",")
        f_name.append(line_info[0].strip())
        l_name.append(line_info[1].strip())
        strt.append(line_info[2].strip())
        cty.append(line_info[3].strip())
        state.append(line_info[4].strip())

print(f_name)
print(l_name)
print(strt)
print(cty)
print(state)

Вывод:

['James', 'Shenna']
['Jose', 'Laureles']
['664 New Avenue', '288 Livinghood Heights']
['New Orleans', 'Brighton']
['Orleans', 'Livingston']
1 голос
/ 07 мая 2020

Вы можете использовать split и zip.

def extract(string):
  lines = string.split(";")
  split_lines = tuple(map(lambda line: line.split(","), lines))
  no_space1 = tuple(map(lambda item: item.strip(), split_lines[0]))
  no_space2 = tuple(map(lambda item: item.strip(), split_lines[1]))
  return list(zip(no_space1, no_space2))

Это даст

[('James', 'Shenna'), ('Jose', 'Laureles'), ('664 New Avenue', '288 Livinghood Heights'), ('New Orleans', 'Brighton'), ('Orleans', 'Living
ston'), ('LA', 'MI'), ('8/27/200', '2/19/75'), ('123', 'laureles9219@yahoo.com'), ('jjose@gmail.com', '')]

В конце есть несколько кортежей, о которых вы не просили, но это относительно хорошо. Строки no_space 1 и 2 немного повторяются, но, на мой взгляд, втиснуть их в одну строку хуже.

1 голос
/ 07 мая 2020

Если порядок всегда одинаковый. Вы можете сделать что-то вроде этого;

f_name = []
l_name = []
strt = []
cty = []
state = []
for client in clientData.split(";\n "):
    client_ = client.split(",")
    f_name.append(client_[0])
    l_name.append(client_[1])
    strt.append(client_[2])
    cty.append(client_[3])
    state.append(client_[4])

Я мог бы добавить некоторую обработку исключений для обработки ; в конце вашей строки, но оставив это вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...