【问题标题】:Remove string quotes from array in Python从Python中的数组中删除字符串引号
【发布时间】:2014-02-16 14:08:09
【问题描述】:

我正在尝试删除数组中的一些字符,所以我只剩下 x 和 y 坐标,用逗号分隔,如下所示:

[[316705.77017187304,790526.7469308273]
 [321731.20991025254,790958.3493565321]]

我使用zip() 创建了x 和y 值的tuple(作为字符串列表中的对),然后我使用numpy 将其转换为数组。该数组当前如下所示:

[['316705.77017187304,' '790526.7469308273,']
 ['321731.20991025254,' '790958.3493565321,']]

我需要输出是一个数组。

我很困惑如何去掉单引号和第二个逗号。我读过map() 可以将字符串更改为数字,但我无法让它工作。

提前致谢

【问题讨论】:

  • 你需要的输出是第一个吗?
  • 是的。刚刚想到,在将字符串添加到元组之前是否需要将字符串转换为数字?谢谢
  • 我不太确定在下面查看我的答案。可能对你有帮助,否则我将删除。
  • I have read that map() can change string to numeric 其实不是……

标签: python arrays python-2.7 numpy coordinates


【解决方案1】:

使用31.2. ast — Abstract Syntax Trees¶

import ast
xll =  [['321731.20991025254,' '790958.3493565321,'], ['321731.20991025254,' '790958.3493565321,']]
>>> [ast.literal_eval(xl[0]) for xl in xll]
[(321731.20991025254, 790958.3493565321), (321731.20991025254, 790958.3493565321)]

上面给出了列表列表的元组列表,输入以下:

>>> [list(ast.literal_eval(xl[0])) for xl in xll]
[[321731.20991025254, 790958.3493565321], [321731.20991025254, 790958.3493565321]]

老:我认为是这样的:

>>> sll
[['316705.770172', '790526.746931'], ['321731.20991', '790958.349357']]
>>> fll = [[float(i) for i in l] for l in sll]
>>> fll
[[316705.770172, 790526.746931], [321731.20991, 790958.349357]]
>>> 

旧编辑:

>>> xll =  [['321731.20991025254,' '790958.3493565321,'], ['321731.20991025254,' '790958.3493565321,']]
>>> [[float(s) for s in xl[0].split(',') if s.strip() != ''] for xl in xll]
[[321731.20991025254, 790958.3493565321], [321731.20991025254, 790958.3493565321]]

【讨论】:

  • 一旦我从原始字符串中删除了逗号,您的“旧”答案似乎已经成功了。太棒了,谢谢!
  • @user2727152 尝试:[[float(s) for s in xl[0].split(',') if s.strip() != ''] for xl in xll] 删除, 并一步转换为浮点数。
猜你喜欢
  • 2017-09-24
  • 2017-04-18
  • 2020-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多