【问题标题】:Remove double quotes and special characters from string list python从字符串列表python中删除双引号和特殊字符
【发布时间】:2020-04-22 09:45:43
【问题描述】:

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

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

【问题讨论】:

  • 你有一个额外的"
  • ['SACOL1123', "('SA1123', 'AAW38003.1')"] 是两个元素的列表,这是故意的吗? IE。你真的想把它按摩成三个元素的列表吗?还是输入列表中有错字?
  • 我知道,我正在尝试删除它...
  • 这不是错字,这是我要解决的问题

标签: python string list character


【解决方案1】:

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

【讨论】:

  • 谢谢,你能解释一下这里的 x[0] 和 x[1] 指的是什么吗?
  • 列表的第一个和第二个元素。
【解决方案2】:

这可以通过将列表中的每个项目转换为字符串然后用空字符串替换标点符号来完成。希望这会有所帮助:

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

【讨论】:

    猜你喜欢
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2017-07-25
    • 2023-04-04
    • 1970-01-01
    • 2014-07-30
    相关资源
    最近更新 更多