【问题标题】:Python split string into list with ints, strings and decimalsPython 将字符串拆分为包含整数、字符串和小数的列表
【发布时间】:2020-06-20 15:22:57
【问题描述】:

我想分手

dimensions = "M 0 0 C 65 1 130 1 194.6875 0 C 195 17 195 33 194.6875 50 C 130 49 65 49 0 50 C 0 33 0 17 0 0 z"

进入列表形式,如果我想得到194.6875,我可以这样做

print(dimensions[8])

由于有多种类型,我无法将其转换为列表。

【问题讨论】:

  • 您希望维度[8] 是浮点数还是字符串?
  • 浮动是我想要的
  • 如果这是您要解析的 SVG 路径,也许您想看看 pypi.org/project/svg.path

标签: python arrays python-3.x list


【解决方案1】:

您可以在字符串上使用 .split() 方法并传入要拆分的字符,即:

dimensions = "M 0 0 C 65 1 130 1 194.6875 0 C 195 17 195 33 194.6875 50 C 130 49 65 49 0 50 C 0 33 0 17 0 0 z"
listDimensions = dimensions.split(' ')
x = float(listDimensions[8])
print(x)

之后,可以使用 str()int()float() 之类的方式更改所需项目的数据类型

【讨论】:

    【解决方案2】:
    dimensions = "M 0 0 C 65 1 130 1 194.6875 0 C 195 17 195 33 194.6875 50 C 130 49 65 49 0 50 C 0 33 0 17 0 0 z"
    dimensions = dimensions.split(" ")
    print(float(dimensions[8]))
    

    【讨论】:

      【解决方案3】:

      您可以在空间上拆分并转换为浮动不是字母字符串的值

      dimensions = "M 0 0 C 65 1 130 1 194.6875 0 C 195 17 195 33 194.6875 50 C 130 49 65 49 0 50 C 0 33 0 17 0 0 z"
      values = [val if val.isalpha() else float(val) for val in dimensions.split(" ")]
      
      print(values) # ['M', 0.0, 0.0, 'C', 65.0, 1.0, 130.0, 1.0, 194.6875, 0.0, 'C', 195.0, 17.0, 195.0, 33.0, 194.6875, 50.0, 'C', 130.0, 49.0, 65.0, 49.0, 0.0, 50.0, 'C', 0.0, 33.0, 0.0, 17.0, 0.0, 0.0, 'z']
      print(values[8], type(values[8])) # 194.6875 <class 'float'>
      

      【讨论】:

        猜你喜欢
        • 2013-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 2021-04-05
        • 2017-11-04
        相关资源
        最近更新 更多