将字符串转换为Python

时间:2016-05-03 20:33:02

标签: python string list coordinates

(这可能很简单,但是)我说这个输入是一个字符串:

"280.2,259.8 323.1,122.5 135.8,149.5 142.9,403.5"

我希望将每个坐标点分成不同的列表,每个x和y值,所以它们最终看起来像这样:

listX = [280.2, 323.1, 135.8, 142.9]
listY = [259.8, 122.5, 149.5, 403.5]

我需要这个能够以任何大小的字符串开头,提前谢谢!

6 个答案:

答案 0 :(得分:0)

查看split字符串方法。它应该让你开始。

答案 1 :(得分:0)

您可以执行以下操作:

>>> a ="280.2,259.8 323.1,122.5 135.8,149.5 142.9,403.5"
>>> b = a.split(" ")
>>> b
['280.2,259.8', '323.1,122.5', '135.8,149.5', '142.9,403.5']
>>> c = [ x.split(',') for x in b]
>>> c
[['280.2', '259.8'], ['323.1', '122.5'], ['135.8', '149.5'], ['142.9', '403.5']]
>>> X = [ d[0] for d in c]
>>> X
['280.2', '323.1', '135.8', '142.9']
>>> Y = [ d[1] for d in c]
>>> Y
['259.8', '122.5', '149.5', '403.5']

答案 2 :(得分:0)

有一个神奇的方法调用str.split,它给出一个字符串,用分隔符分割。

假设我们在变量s中有字符串。

要按空格拆分并列出清单,我们会做

coords = s.split()

此时,将其放入列表的最简单方法是

listX = [float(sub.split(",")[0]) for sub in coords]
listY = [float(sub.split(",")[1]) for sub in coords]

答案 3 :(得分:0)

复制并粘贴它,它应该可以工作:

s_input = "280.2,259.8 323.1,122.5 135.8,149.5 142.9,403.5"

listX = [float(x.split(',')[0]) for x in s_input.split()]
listY = [float(y.split(',')[1]) for y in s_input.split()]

答案 4 :(得分:0)

这样可行。

my_string="280.2,259.8 323.1,122.5 135.8,149.5 142.9,403.5"
listX =[item.split(",")[0] for item in my_string.split()]
listY=[item.split(",")[1] for item in my_string.split()]

 X_list=[]
 Y_list=[]
 for val in [item.split(",") for item in my_string.split()]:
    X_list.append(val[0])
    Y_list.append(val[1])

使用哪个版本可能取决于您的个人偏好和字符串的长度。

答案 5 :(得分:0)

您可以将zipsplit的组合与列表理解结合使用:

s = "280.2,259.8 323.1,122.5 135.8,149.5 142.9,403.5"
l = zip(*[a.split(',') for a in s.split()])

这将返回2个元组的列表。 要获取列表,请在其上使用map

l = map(list, zip(*[a.split(',') for a in s.split()]))

l[0]l[1]会有您的列表。

如果您的列表很大,请考虑使用itertools.izip()