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

2024-09-28 22:20:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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]

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


Tags: in列表forreplacelist双引号设法陌生
2条回答

这可以使用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']]

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

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

相关问题 更多 >