字符串中缺少逗号时要列出的字符串

时间:2018-12-17 14:28:25

标签: string python-3.x list string-literals

我有点想通过将数据帧的向量转换为str将自己描绘在角落。我的向量现在看起来像[ -9.1676396 -171.8196878]。问题在于,它们以某种方式失去了中间的逗号,就像以前的[ -9.1676396, -171.8196878]一样。然后,每当我需要列表转换时,我都可以做:

literal_eval('[ -9.1676396, -171.8196878]')

但是,由于我失去了逗号,因此该方法不再有效。我的问题是,如何在列表中转换这样的字符串?我还必须考虑到一些间距可能不同的事实。这是我可以进行的修改类型:

[ -9.1676396 -171.8196878 ]
[1.2904753 103.8520359]
[   21.2160437 -157.975203 ]

2 个答案:

答案 0 :(得分:2)

看起来不再有字符串了,只是一个数组。

我建议您使用正则表达式

 import re

 pattern =  "/[\s" #replace spaces on outside of numbers if any
 replace = "" # i.e nothing
 re.sub(pattern, replace)

然后再次执行相同的操作,但是正则表达式模式将是

 re.sub([0-9]*\s[0-9]* , ",")

答案 1 :(得分:1)

如果您有这样的一行:

[ -9.1676396 -171.8196878 ]

可以通过以下代码轻松将其转换为浮点数列表:

[float(x) for x in '[ -9.1676396 -171.8196878]'.replace('[','').replace(']','').split()]

此代码删除了[]符号,使用空格分隔行作为分隔符,并将生成的字符串部分转换为浮点数。