【问题标题】:remove quotes and squared brackets from list从列表中删除引号和方括号
【发布时间】:2020-03-24 08:14:45
【问题描述】:

循环时出现第二个问题。 该列表包含方括号中的字符串:

values = [['16.4 '], ['18.06 '], ['16.4 '], ['18.06 ']]

但结果应该如下所示(没有引号,没有方括号):

values = [16.3, 18.06, 16.4, 18.6]

脚本:

name = []
values = []

    import itertools
    import re


    df = open('TESTSOV.csv')
    for i,line in enumerate(itertools.islice(df,10)):
        if "TYPE" in line:
            print('hello')
            name.append(re.findall('NAME= (.*?\s)',line))

        if re.search(r"\bNOMINAL\b",line):
            values.append(re.findall('H= (.*?\s)',line))


    print(name, '\n', values)

.csv 文档包含:

<Set Name= Test>
    < TYPE NAME= Hello >
        <NOMINAL A= B= C= D= E= F= G= 1.10 H= 2.20 I= 3.30 J= >
        <2ND_NOMINAL A= B= C= D= E= F= G= 11.00 H= 22.00 I= 33.00 >

    < TYPE NAME= bye >
        <NOMINAL A= B= C= D= E= F= G= 1.10 H= 2.50 I= 3.30 J= >
        <2ND_NOMINAL A= B= C= D= E= F= G= 11.00 H= 22.00 I= 33.00 >


<END>

【问题讨论】:

  • values = [float(v[0]) for v in values]
  • 不是“方括号”,而是列表。您只需要从该列表中获取 一项

标签: python python-3.x list loops


【解决方案1】:

您正在获取子列表,因为您使用 re.findall 而不是使用 re.search 从行中获取单个值。

例如:

for i,line in enumerate(itertools.islice(df,10)):
    if "TYPE" in line:
        print('hello')
        name.append(re.search('NAME= (.*?\s)',line).group(0))

    if re.search(r"\bNOMINAL\b",line):
        values.append(re.search('H= (.*?\s)',line).group(0))

【讨论】:

    【解决方案2】:

    在下面试试这个:

    values = [['16.4 '], ['18.06 '], ['16.4 '], ['18.06 ']]
    
    output = [float(i[0]) for i in values]
    
    print(output)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-21
      相关资源
      最近更新 更多