循环时发生第二个问题。 该列表在方括号中包含字符串:
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>
答案 0 :(得分:3)
您之所以得到子列表,是因为您使用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))
答案 1 :(得分:0)
在下面尝试一下:
values = [['16.4 '], ['18.06 '], ['16.4 '], ['18.06 ']]
output = [float(i[0]) for i in values]
print(output)