Python - 我如何从字符串列表中删除一个字母,将字符串更改为浮点数,转换一些浮点数,并保持顺序

时间:2018-02-13 05:25:57

标签: python string list loops str-replace

myList=['57.43 N', '44.78 S', '59.64 S', '88.11 N']

我正在学习python,我有一个代表Lat/Lon的字符串列表。我需要删除N/S,当S乘以-1时,并将所有字符串转换为floats。我以为我可以构建一个我的值的索引,并以某种方式将字符串与S与N分开,创建北方和南方列表删除N / S,

x=[x.remove('NS') for x in myList]
y=[y.remove('S') for x in myList] 

将y列表乘以-1,并使用extend x by y,这样我的索引就会保持一致。任何建议都会非常可爱。 感谢。

2 个答案:

答案 0 :(得分:2)

您可以使用列表推导来简洁地实现此目的:

newList = [-1 * float(x[:-2]) if 'S' in x else float(x[:-2]) for x in mylist]

当然,这假设了以下每个要素:

  1. 最后两个字符始终为' N'' S'
  2. 其他字符可以转换为浮点数。

答案 1 :(得分:0)

您可以将每个字符串拆分为数字和方向。如果方向为S,则将其乘以-1

myList=['57.43 N', '44.78 S', '59.64 S', '88.11 N']

result = []
for data in myList:
    num, direction = data.split()

    num = float(num)
    if direction == 'S':
        num *= -1

    result.append(num)

print(result)
# [57.43, -44.78, -59.64, 88.11]