【问题标题】:How to replace the double quotation marks around a string in python list?如何替换python列表中字符串周围的双引号?
【发布时间】:2019-11-01 06:33:41
【问题描述】:

我有一个数据框列,其中一些在字符串中包含单引号,如下所示(这是两个彼此相邻的单引号,因此可以在 SQL 中转义单引号):

 'Group1>>TV>>Blue>>Q''19>>four'

其余的字符串不包含引号。在转换我的数据框列以获取我可以复制并粘贴到 SQL 查询中的所有字符串的列表时,当我需要 SQL 的单引号时,它最终会在字符串周围加上双引号。

 ids = ["Group1>>TV>>Blue>>Q''19>>four", 'Group3>>Desktop>>Blue>>>two', 'Group1>>Desktop>>Green>>>two']

我想改变它,以便我得到这个:

ids = ['Group1>>TV>>Blue>>Q''19>>four', 'Group3>>Desktop>>Blue>>>two', 'Group1>>Desktop>>Green>>>two']

我尝试了一些不同的方法,但似乎没有任何效果。

 [str(x) for x in ids]
 [x.strip('"') for x in ids]
 [x.replace('"', "'") for x in ids]

【问题讨论】:

  • 字符串"Group1>>TV>>Blue>>Q''19>>four" 不包含双引号。引号只是分隔符,用于指定字符串的开始和结束位置。
  • 您是否正在使用字符串格式构建 SQL?这是一件非常糟糕、危险的事情。使用参数化查询。
  • 这个'Group1>>TV>>Blue>>Q''19>>four'在字符串常量连接stackoverflow.com/questions/34174539/…之后变成了这个'Group1>>TV>>Blue>>Q19>>four'
  • 我只是想获取要复制并粘贴到 sql 查询 where 子句中的字符串列表。但是,SQL 不会将字符串周围的双引号作为字符串读取,因此我只需要将其更改为双引号。我希望找到一种使用 Python 的快速方法,而不是手动将双引号更改为单引号。
  • 把外面的双引号改成单引号**

标签: python list quotes


【解决方案1】:

适应this答案的一种方法是扩展python的内置str类修改对象的规范字符串表示,即__repr__()dunder方法,以便将双引号替换为单引号:

class str2(str):
    def __repr__(self):
        return ''.join(('\'', super().__repr__()[1:-1], '\''))

然后简单地用你列表中的字符串进行实例化:

ids = ["Group1>>TV>>Blue>>Q''19>>four", 'Group3>>Desktop>>Blue>>>two', \
       'Group1>>Desktop>>Green>>>two']

list(map(str2, ids))

['Group1>>TV>>Blue>>Q''19>>four',
 'Group3>>Desktop>>Blue>>>two',
 'Group1>>Desktop>>Green>>>two']

【讨论】:

    猜你喜欢
    • 2018-10-29
    • 2018-11-28
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 2019-03-11
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多