如何逐行读取文件,如果它包含Python中具有值范围的字符串,则打印该行?

Inf*_*ion 0 python csv python-2.7

我是Python 2.7的新手,我仍然试图掌握它.

我有一个文本文件,其中包含一行包含如下字符串的行:

"AA,,BB,2014-02-06,0,0|CC,,DD,2014-02-27,0,0|EE,,FF,2014-02-04,1,1"#"GG"#"USD"#"true"#Total : USD#1638.93#
Run Code Online (Sandbox Code Playgroud)

(在'USD'之前有一堆文字随着每一行而变化.)

我试过这样做:

with open('out_put_usjfk50.csv', 'rb') as f:
    reader = csv.reader(f, delimiter='#')
    for row in reader:
        amount = float(row[5])
        if amount <= 800:
            print row
        elif amount is None:
            pass
Run Code Online (Sandbox Code Playgroud)

但我得到了同样的错误: ValueError: could not convert string to float:

我很难过.如何通过每一行来检查整数值(这是字符串的一部分),然后打印行(如果它小于1500美元?)?如果有人能指出我正确的方向,我会很感激!

Mar*_*ers 5

你有一个CSV文件; 使用csv模块:

import csv

with open('filename.csv', 'rb') as f:
    reader = csv.reader(f, delimiter='#')
    for row in reader:
Run Code Online (Sandbox Code Playgroud)

新的每个row对象都是一个字符串列表; 每个字符串代表文件中的一列.

假设该'1638.93'列是第8列,那么您将使用(使用基于0的索引的Python):

amount = float(row[7])
Run Code Online (Sandbox Code Playgroud)

现在你有一个来自该字符串的浮点数,你可以测试它:

with open('filename.csv', 'rb') as f:
    reader = csv.reader(f, delimiter='#')
    for row in reader:
        amount = float(row[7])
        if amount <= 1500:
            print row
Run Code Online (Sandbox Code Playgroud)