Python:如何在特殊车道中找到特殊价值?

时间:2014-03-23 21:29:54

标签: python

昨天我问了一下,有些人给了我一个很好的答案。

但我还需要再提一个问题。

[

Average monthly temperatures in Dubuque, Iowa,

January 1964 through december 1975, n=144

24.7    25.7    30.6    47.5    62.9    68.5    73.7    67.9    61.1    48.5    39.6    20.0

16.1    19.1    24.2    45.4    61.3    66.5    72.1    68.4    60.2    50.9    37.4    31.1

10.4    21.6    37.4    44.7    53.2    68.0    73.7    68.2    60.7    50.2    37.2    24.6

21.5    14.7    35.0    48.3    54.0    68.2    69.6    65.7    60.8    49.1    33.2    26.0

19.1    20.6    40.2    50.0    55.3    67.7    70.7    70.3    60.6    50.7    35.8    20.7

14.0    24.1    29.4    46.6    58.6    62.2    72.1    71.7    61.9    47.6    34.2    20.4

8.4     19.0    31.4    48.7    61.6    68.1    72.2    70.6    62.5    52.7    36.7    23.8

11.2    20.0    29.6    47.7    55.8    73.2    68.0    67.1    64.9    57.1    37.6    27.7

13.4    17.2    30.8    43.7    62.3    66.4    70.2    71.6    62.1    46.0    32.7    17.3

22.5    25.7    42.3    45.2    55.5    68.9    72.3    72.3    62.5    55.6    38.0    20.4

17.6    20.5    34.2    49.2    54.8    63.8    74.0    67.1    57.7    50.8    36.8    25.5

20.4    19.6    24.6    41.3    61.8    68.5    72.0    71.1    57.3    52.5    40.6    26.2

]

这就是我从网站获得的,我使用了这个

for line in mystr.split('\n'):
if not line:
    continue
print (line.split()[3])enter code here

当我使用它时,我得到每一行的每四个值。

这几乎是我想要的,但如果我打印它,我也会“进入”和“十二月”

我怎么能摆脱这两个字?

4 个答案:

答案 0 :(得分:1)

略过前两行。

text = iter(mystr.split('\n'))
next(text)
next(text)
for line in text:
   ...

...

for line in itertools.islice(mystr.split('\n'), 2, None):
   ...

答案 1 :(得分:1)

获取应该是float但不是ValueError exception的内容,请尝试以下

 for line in mystr.split('\n'):
     if not line:
         continue
     try:
         print (float(line.split()[3]))
     except ValueError:
         pass

答案 2 :(得分:0)

print (line.split()[3])enter code here替换为:

if line.split()[3] not in ['in', 'december']:
    print (line.split()[3])

或更通用:

value = line.split(3)
try:
    value = float(value)
    print value
except ValueError:
    pass

答案 3 :(得分:0)

在这种情况下使用生成器是很好的,您可以使用try: ... except:...。我的看法是:

txt = """[
Average monthly temperatures in Dubuque, Iowa,
January 1964 through december 1975, n=144
24.7    25.7    30.6    47.5    62.9    68.5
16.1    19.1    24.2    45.4    61.3    66.5
10.4    21.6    37.4    44.7    53.2    68.0"""

def my_numbers(txt):
    for line in txt.splitlines():
        try:
            yield float(line.split()[3])
        except (ValueError, IndexError): 
        # if conversion fails or not enough tokens in line
            continue

result = list(my_numbers(txt))
print result # output: [47.5, 45.4, 44.7]