如何在python中向字符串添加括号

如何在python中向字符串添加括号,python,pandas,string,replace,parentheses,Python,Pandas,String,Replace,Parentheses,我有一个字符串,我想转换成一个列表或带括号的字符串。我该怎么做 字符串为st=((22027.0 22943.0、22026.0 22939.0、22025.0 22936.0、22025.0 22932.0、22027.0 22929.0、22030.0 22926.0、22031.0 22922.0、22033.0 22919.0、22033.0 22907.0、22030.0 22908.0、22029.0 22911.0))所需的输出应为: ([(22027.0, 22943.0), (

我有一个字符串,我想转换成一个列表或带括号的字符串。我该怎么做

字符串为
st=((22027.0 22943.0、22026.0 22939.0、22025.0 22936.0、22025.0 22932.0、22027.0 22929.0、22030.0 22926.0、22031.0 22922.0、22033.0 22919.0、22033.0 22907.0、22030.0 22908.0、22029.0 22911.0))
所需的输出应为:

([(22027.0, 22943.0), (22026.0, 22939.0), (22025.0, 22936.0), (22025.0, 22932.0), (22027.0, 22929.0), (22030.0, 22926.0), (22031.0, 22922.0), (22033.0, 22919.0), (22033.0, 22907.0), (22030.0 ,22908.0), (22029.0, 22911.0)])
到目前为止我试过什么

s = str('((22027.0 22943.0, 22026.0 22939.0, 22025.0 22936.0, 22025.0 22932.0, 22027.0 22929.0, 22030.0 22926.0, 22031.0 22922.0, 22033.0 22919.0, 22033.0 22907.0, 22030.0 22908.0, 22029.0 22911.0))')
op = s.replace(', ', '),(')
这不会提供所需的输出。如何获得以下输出

([(22027.0, 22943.0), (22026.0, 22939.0), (22025.0, 22936.0), (22025.0, 22932.0), (22027.0, 22929.0), (22030.0, 22926.0), (22031.0, 22922.0), (22033.0, 22919.0), (22033.0, 22907.0), (22030.0 ,22908.0), (22029.0, 22911.0)])

一旦去掉括号,就更容易了

从那里,您可以在逗号上拆分,并从成对的字符串中形成元组(将它们转换为浮点数后)

一位评论者说了一句很好的一句话,但这里有一个for循环:

st =  "((22027.0 22943.0, 22026.0 22939.0, 22025.0 22936.0, 22025.0 22932.0, 22027.0 22929.0, 22030.0 22926.0, 22031.0 22922.0, 22033.0 22919.0, 22033.0 22907.0, 22030.0 22908.0, 22029.0 22911.0))"
st = [x.strip() for x in st[2:-2].split(",")]
res = []
for x in st:
    res.append(tuple(float(y) for y in x.split()))
print(res)

如果要将结果作为字符串列表,可以将
replace
lambda
map

list(映射(lambda x:f'({x.strip().replace(“,”,”)),st[2:-2]。拆分(','))
#输出:['(22027.022943.0)'(22026.022939.0)'(22025.022936.0)'(22025.022932.0)'(22027.022929.0)'(22030.022926.0)'(22031.022922.0)'(22033.022919.0)'(22033.022907.0)'(22030.022908.0)'(22029.022911.0)]

如果要将结果作为具有浮点值的元组列表,可以在上述方法的基础上使用
eval

list(map(lambda x:eval(f'({x.strip().replace(“,”,“,”})),st[2:-2]。split(','))
#输出:[(22027.022943.0),(22026.022939.0),(22025.022936.0),(22025.022932.0),(22027.022929.0),(22030.022926.0),(22031.022922.0),(22033.022919.0),(22033.022907.0),(22030.022908.0),(22029.02911.0)]
  • 去掉前后括号
  • 处拆分结果字符串
  • 现在将每个
    字符串
    转换为
    浮点
    ,并创建一个
    元组
  • 将那些
    元组添加到列表中

[s.strip(“()”).split(“,”)中pair的元组(map(float,pair.split())
首先去掉两端的paren,然后在
上拆分。再次拆分结果对并进行强制转换以使每个对浮动,并在最后对该对进行元组化。顺便说一下,所需输出中的
()
的封闭对并没有在Python中定义新的结构。因此,没有这些帕伦夫妇也是一样的。
st =  "((22027.0 22943.0, 22026.0 22939.0, 22025.0 22936.0, 22025.0 22932.0, 22027.0 22929.0, 22030.0 22926.0, 22031.0 22922.0, 22033.0 22919.0, 22033.0 22907.0, 22030.0 22908.0, 22029.0 22911.0))"
st = st[2:-2]
s = st.split(',')

res = []

for i in s:
    res.append(tuple(map(float, i.split())))