在python中,如何使用正则表达式将方括号替换为括号

Win*_*ton 4 python regex

我有一个清单:list = [1,2,3].我想将其转换为带括号的字符串:string = (1,2,3).

目前我正在使用字符串替换string = str(list).replace('[','(').replace(']',')').但我认为使用regex.sub有更好的方法.但我不知道该怎么做.非常感谢

Jon*_*nts 14

如果确实有一个列表,那么:

>>> s  = [1,2,3]
>>> str(tuple(s))
'(1, 2, 3)'
Run Code Online (Sandbox Code Playgroud)

  • `str(tuple(s)).rstrip(',)') + ')'` '(1)' (4认同)
  • 但是我还有一个带字符串的,然后它就不太好用了。>>> s = ['1'] >>> str(tuple(s)) "('1',)" (2认同)
  • 不适用于具有单个元素的列表。它将添加一个尾随逗号,如“(1,)” (2认同)

mgi*_*son 7

你可以string.maketrans改用——我打赌它比一系列的运行速度更快,str.replace并且可以更好地扩展到更多的单个字符替换。

>>> import string
>>> table = string.maketrans('[]','()')
>>> s = "[1, 2, 3, 4]"
>>> s.translate(table)
'(1, 2, 3, 4)'
Run Code Online (Sandbox Code Playgroud)

您甚至可以通过将可选的第二个参数传递给 来使用它从原始字符串中删除字符str.translate

>>> s = str(['1','2'])
>>> s
"['1', '2']"
>>> s.translate(table,"'")
'(1, 2)'
Run Code Online (Sandbox Code Playgroud)

在 python3.x 中,字符串模块消失了,您可以maketrans通过str内置模块访问:

table = str.maketrans('[]','()')
Run Code Online (Sandbox Code Playgroud)