Удалить двойные кавычки и специальные символы из списка строк python - PullRequest
0 голосов
/ 22 апреля 2020

Я довольно новичок в python.

У меня есть такой список:

['SACOL1123', "('SA1123', 'AAW38003.1')"]
['SACOL1124', "('SA1124', 'AAW38004.1')"]

И я хочу удалить лишние двойные кавычки и парантез, чтобы он выглядел вот так:

['SACOL1123', 'SA1123', 'AAW38003.1']
['SACOL1124', 'SA1124', 'AAW38004.1']

Вот что мне удалось сделать:

newList = [s.replace('"(', '') for s in list]
newList = [s.replace(')"', '') for s in newList]

Но вывод точно такой же, как и список ввода. Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Это можно сделать, преобразовав каждый элемент в списке в строку, а затем заменив пунктуацию пустой строкой. Надеюсь, это поможет:

import re

List = [['SACOL1123', "('SA1123', 'AAW38003.1')"], 
        ['SACOL1124', "('SA1124', 'AAW38004.1')"]]

New_List = []
for Item in List:
    New_List.append(re.sub('[\(\)\"\'\[\]\,]', '', str(Item)).split())

New_List
Output: [['SACOL1123', 'SA1123', 'AAW38003.1'], 
         ['SACOL1124', 'SA1124', 'AAW38004.1']]
1 голос
/ 22 апреля 2020

Это возможно, используя ast.literal_eval. Ваш второй элемент из списка - это строковое представление действительного Python кортежа, который вы можете безопасно оценить.

[[x[0]] + list(ast.literal_eval(x[1])) for x in lst]

Код :

import ast

lst = [['SACOL1123', "('SA1123', 'AAW38003.1')"],
       ['SACOL1124', "('SA1124', 'AAW38004.1')"]]

output = [[x[0]] + list(ast.literal_eval(x[1])) for x in lst]

# [['SACOL1123', 'SA1123', 'AAW38003.1'],
#  ['SACOL1124', 'SA1124', 'AAW38004.1']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...