Python 从字符串列表中删除双引号和特殊字符

Python 从字符串列表中删除双引号和特殊字符,python,string,list,character,Python,String,List,Character,我对python很陌生 我有这样一份清单: ['SACOL1123', "('SA1123', 'AAW38003.1')"] ['SACOL1124', "('SA1124', 'AAW38004.1')"] ['SACOL1123', 'SA1123', 'AAW38003.1'] ['SACOL1124', 'SA1124', 'AAW38004.1'] 我想删除额外的双引号和偏执,所以看起来像这样: ['SACOL1123', "('SA1123', 'AAW38003.1')"]

我对python很陌生

我有这样一份清单:

['SACOL1123', "('SA1123', 'AAW38003.1')"]
['SACOL1124', "('SA1124', 'AAW38004.1')"]
['SACOL1123', 'SA1123', 'AAW38003.1']
['SACOL1124', 'SA1124', 'AAW38004.1']
我想删除额外的双引号和偏执,所以看起来像这样:

['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]

但输出与输入列表完全相同。我该怎么做呢?

这可以使用
ast.literal\u 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']]

这可以使用
ast.literal\u 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']]

这可以通过将列表中的每个项目转换为字符串,然后用空字符串替换标点符号来实现。希望这有助于:

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']]

这可以通过将列表中的每个项目转换为字符串,然后用空字符串替换标点符号来实现。希望这有助于:

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']]

你有一个额外的
['SACOL1123',”('SA1123','aaw3803.1')“]
是一个由两个元素组成的列表,这是有意的吗?也就是说,你真的想把它推到一个由三个元素组成的列表中?或者输入列表中有输入错误吗?我知道,我正在尝试删除它…这不是一个输入错误,这是我想解决的问题你有一个额外的
['SACOL1123',“('SA1123','aaw3803.1')”]
是一个包含两个元素的列表,这是故意的吗?也就是说,你真的想把它归纳成三个元素的列表吗?或者输入列表中是否有输入错误?我知道,我正在尝试删除它…这不是输入错误,这是我想要解决的问题。谢谢,你能解释一下x[0]和x[1]在这里指的是什么吗?列表的第一和第二个元素。谢谢,你能解释一下x[0]和x[1]在这里指的是什么吗?列表的第一和第二个元素。