удалить цитаты и квадратные скобки из списка - PullRequest
0 голосов
/ 24 марта 2020

Во время зацикливания возникает вторая проблема. Список содержит строки в квадратных скобках:

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>

Ответы [ 2 ]

3 голосов
/ 24 марта 2020

Вы получаете подсписок, потому что вы используете 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))
0 голосов
/ 24 марта 2020

Попробуйте это ниже:

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

output = [float(i[0]) for i in values]

print(output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...