Python:操纵字符串的有效方法?

时间:2012-03-01 23:18:07

标签: python string

假设你有字符串

    s1 = "('element1', 'element2', 'element3')"

    s2 = "(1A, 2A, 3A)"

是否有一种可用于转换的简单技术

    s1 to "(element1, element2, element3)"

    s2 to "(1, 2, 3)"

对于s1,每个单引号都需要消失,对于s2,每个A应该消失。什么是最简单的方法,只有这个?

编辑 - >引号内的所有内容都是整个字符串的一部分......没有元组也没有任何变量。谢谢!

4 个答案:

答案 0 :(得分:3)

我认为s1s2应该是字符串

s1 = "('element1', 'element2', 'element3')"
s2 = "(1A, 2A, 3A)"

要从s1删除所有单引号,您可以使用

s1 = s1.replace("'", "")

要从A删除所有出现的字母s2,请使用

s2 = s2.replace("A", "")

请注意,字符串无法就地修改(它们是不可变的) - str.replace()将返回一个新字符串。

答案 1 :(得分:2)

我错过了什么吗?

>>> s1 = "('element1', 'element2', 'element3')"
>>> s2 = "(1A, 2A, 3A)"
>>> print s1.replace("'", "")
(element1, element2, element3)
>>> print s2.replace("A", "")
(1, 2, 3)

答案 2 :(得分:1)

你不想在字符串中进行这些操作。你真正想要的是将你的元素解析成一个字符串列表,将它们作为一个列表进行操作,并将它们连接回一个字符串。

您可能会发现以下功能很有用。当然,如果攻击者控制了字符串(例如可以在任何地方插入',),请注意安全漏洞。

def tuplestringToList(s):
    """
        "(AAAAA, BBBBB , CCCCC)" -> ["AAAAA", "BBBBB", "CCCCC"]
    """
    assert s.startswith('(')
    assert s.endswith(')')
    return [fragment.strip() for fragment in s[1:-1].split(',')]

def listToTuplestring(myList):
    return '({})'.format(', '.join(myList))

答案 3 :(得分:0)

>>> s1 = "('element1', 'element2', 'element3')"
>>> result = ''.join([i for i in s1 if i != "'"])
>>> result
'(element1, element2, element3)'
>>> s2 = "(1A, 2A, 3A)"
>>> result = ''.join([i for i in s2 if i != "A"])
>>> result
'(1, 2, 3)'