Python:操作字符串的有效方法?
假设你有弦Python:操作字符串的有效方法?,python,string,Python,String,假设你有弦 s1 = "('element1', 'element2', 'element3')" s1 = "('element1', 'element2', 'element3')" s2 = "(1A, 2A, 3A)" 及 有没有一种简单的方法可以用来转换 s1 to "(element1, element2, element3)" 及 对于s1,每个引号都需要消失,而对于s2,每个A都应该消失。做这件事最直接的方法是什么 编辑->引号内的所有内容都是整个字符串的一
s1 = "('element1', 'element2', 'element3')"
s1 = "('element1', 'element2', 'element3')"
s2 = "(1A, 2A, 3A)"
及
有没有一种简单的方法可以用来转换
s1 to "(element1, element2, element3)"
及
对于s1,每个引号都需要消失,而对于s2,每个A都应该消失。做这件事最直接的方法是什么
编辑->引号内的所有内容都是整个字符串的一部分。。。没有元组,也没有任何变量。谢谢我假设
s1
和s2
应该是字符串
s1 = "('element1', 'element2', 'element3')"
s1 = "('element1', 'element2', 'element3')"
s2 = "(1A, 2A, 3A)"
要从s1
中删除所有单引号,可以使用
s1 = s1.replace("'", "")
要删除s2
中出现的字母A
,请使用
s2 = s2.replace("A", "")
请注意,字符串不能就地修改(它们是不可变的)str.replace()将返回一个新字符串。我是否遗漏了什么
>>> s1 = "('element1', 'element2', 'element3')"
>>> s2 = "(1A, 2A, 3A)"
>>> print s1.replace("'", "")
(element1, element2, element3)
>>> print s2.replace("A", "")
(1, 2, 3)
您不希望在字符串区域中执行这些操作。您真正想要的是将元素解析成一个字符串列表,将它们作为一个列表进行操作,然后将它们重新连接成一个字符串 您可能会发现以下函数很有用。当然,如果攻击者可以控制字符串(例如,可以在任何地方插入
,
和,
)
s1
应该是字符串“('element1','element2','element3')”
,还是三个字符串的元组?对不起,是的,它们是字符串而不是元组!在这些例子中没有变量。。。。。它们实际上只是字符串的一部分……您的规范不完整。请澄清你想做什么:输入是什么,预期输出是什么,最好是它们的类型。另外,我不确定您是在为s1
和s2
寻找一种通用方法还是不同的方法。可能是重复的。。。也适用于A
。您想要哪一种,最有效的方式,还是最直接的方式,因为它们通常不是同一件事。:)“…元素到字符串列表中”,这不应该读“…元素到字符串列表中”?谢谢,我不明白所有的困惑是什么,不幸的是。。。但非常感谢您的帮助:)
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))
>>> 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)'