如何在Python中忽略foor循环中的非数字?

2024-06-07 21:09:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为new_to_csv的列表,如下所示:

    [['88', 'BRC', 'LON', '2020-09-07 06:05:07+00:00', '2020-09-07 09:03:00+00:00'],
    ['*021', 'BRC', 'LON', '2020-09-07 08:26:07+00:00', '2020-09-07 09:34:01+00:00'],` 
    ['*023', 'BRC', 'LON', '2020-09-07 08:30:00+00:00', '2020-09-07 13:50:18+00:00'],   `
    ['nodigit', 'BRC', 'LON', '2020-09-07 03:00:03+00:00', '2020-09-07 23:30:01+00:00'],
    ['++158', 'BRC', 'LON', '2020-09-07 05:42:05+00:00', '2020-09-07 10:02:01+00:00'],`       
    ['200', 'BRC', 'LON', '2020-09-07 05:08:32+00:00', '2020-09-07 13:05:00+00:00']]

我还有一个名为table_x,的文件,看起来像这样:

XXXXXX  Version 1.0 BATOS DE ESPANA                                                                             
11-12-2011 t/m 08-12-2012                                                       
RG  Mini    Maxi    Organization    ISVL    PR  BSS Afw     Rage    TrT Trajecto    IBB Ant Dato    
*****data*****                                                      
R   1   99  BALEARIA    BALEARIA        Gers  INT       INT C       IB  99      
R   100 103 Espanola                    NIG             4       
R   104 105 BALEARIA    BALEARIA            PC  ICE C   Asd - Ut - Ah - Espana  IB  2       
R   106 119 Espanola                    NIG             14      
R   120 129 BALEARIA    BALEARIA            PC  ICE C   Asd - Ut - Ah - Barcelona - Almeria IB  10      
R   130 139 Espanola                    NIG             10      
R   140 149 BALEARIA    BALEARIA            PC  INT C   Shl - Amf - Dv - Hgl - Bh - Algeciras   IB  10      
R   150 159 BALEARIA    BALEARIA        SVS ICE PC  ICE C   Asd - Ut - Vl - Barcelona - Almeria IB  10      
R   160 219 BALEARIA    BALEARIA        Gere  INT   PC  INT C       IB  60      
R   220 229 BALEARIA    BALEARIA            PC  ICE C   Asd - Ut - Ah - Barcelona - Almeria IB  10      

现在,对于{}中的每一个{},我首先检查它是否是一个数字。如果是数字Iam,则在minimaxi之间进行检查。我获取它所在行的3:8列,并将其粘贴到该列表后面。如果x[0]不是一个数字,我将跳过它并将“unknown”写入输出

这是我的代码:

table_x = r"C:\Users\ELK\Downloads\table_x.txt"

result_list = []
with open(table_x, "r") as outer:
    reader = csv.reader(outer, delimiter="\t")
    next(reader) #skip the first 4 lines
    next(reader)
    next(reader)
    next(reader)
    for row in reader:
        mini = row[1]  
        maxi = row[2]  
        for x in new_to_csv:
            veh_number = x[0]
            check_digit = veh_number.isdigit()
            if check_digit:   #<--- check if its digit
                if int(veh_number) > int(mini) and int(veh_number) < int(maxi):
                    result_list.append(x+ [row[3]]+ [row[4]]+ [row[5]]+ [row[6]]+ [row[7]]+ [row[8]])
            if check_digit is False: #if its not digit
                result_list.append(x + [row[3]] + [row[4]] + [row[5]] + ["Unkown"])

print(result_list)

这是我期望的输出:

[['88', 'BRC', 'LON', '2020-09-07 06:05:07+00:00', '2020-09-07 09:03:00+00:00', 'BALEARIA', 'BALEARIA', '', 'Gers  INT', '', 'INT'], 
['*021', 'BRC', 'LON', '2020-09-07 08:26:07+00:00', '2020-09-07 09:34:01+00:00','Unkown', 'Unkown', '', 'Unkown'], 
['*023', 'BRC', 'LON', '2020-09-07 08:30:00+00:00', '2020-09-07 13:50:18+00:00', 'Unkown', 'Unkown', '', 'Unkown'], 
['nodigit', 'BRC', 'LON', '2020-09-07 03:00:03+00:00','2020-09-07 23:30:01+00:00', 'Unkown', 'Unkown', '', 'Unkown'], 
['++158', 'BRC', 'LON', '2020-09-07 05:42:05+00:00', '2020-09-07 10:02:01+00:00', 'Unkown', 'Unkown', '', 'Unkown'],
['200', 'BRC', 'LON', '2020-09-07 05:08:32+00:00', '2020-09-07 13:05:00+00:00', 'BALEARIA', 'BALEARIA', '', 'Gere  INT', 'PC', 'INT']]

上面是我期望的输出88是一个数字,介于199之间,因此我从该行获取3:8*021不是数字,所以我写'Unknown'等等

下面你可以看到我收到的输出,它似乎对非数字进行了多次处理。我不明白为什么

这是我收到的输出:

[['88', 'BRC', 'LON', '2020-09-07 06:05:07+00:00', '2020-09-07 09:03:00+00:00', 'BALEARIA', 'BALEARIA', '', 'Gers  INT', '', 'INT'], 
['*021', 'BRC', 'LON', '2020-09-07 08:26:07+00:00', '2020-09-07 09:34:01+00:00','BALEARIA', 'BALEARIA', '', 'Unkown'], 
['*023', 'BRC', 'LON', '2020-09-07 08:30:00+00:00', '2020-09-07 13:50:18+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['nodigit', 'BRC', 'LON', '2020-09-07 03:00:03+00:00','2020-09-07 23:30:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['++158', 'BRC', 'LON', '2020-09-07 05:42:05+00:00', '2020-09-07 10:02:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'],
['*021', 'BRC', 'LON', '2020-09-07 08:26:07+00:00', '2020-09-07 09:34:01+00:00', 'Espanola', '', '', 'Unkown'],
['*023', 'BRC', 'LON', '2020-09-07 08:30:00+00:00', '2020-09-07 13:50:18+00:00', 'Espanola', '', '', 'Unkown'], 
['nodigit', 'BRC', 'LON', '2020-09-07 03:00:03+00:00', '2020-09-07 23:30:01+00:00', 'Espanola', '', '', 'Unkown'], 
['++158', 'BRC', 'LON', '2020-09-07 05:42:05+00:00', '2020-09-07 10:02:01+00:00', 'Espanola', '', '', 'Unkown'], 
['*021', 'BRC', 'LON', '2020-09-07 08:26:07+00:00', '2020-09-07 09:34:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['*023', 'BRC', 'LON', '2020-09-07 08:30:00+00:00', '2020-09-07 13:50:18+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'],
 ['nodigit', 'BRC', 'LON', '2020-09-07 03:00:03+00:00', '2020-09-07 23:30:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'],
 ['++158', 'BRC', 'LON', '2020-09-07 05:42:05+00:00', '2020-09-07 10:02:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['*021', 'BRC', 'LON', '2020-09-07 08:26:07+00:00', '2020-09-07 09:34:01+00:00', 'Espanola', '', '', 'Unkown'], 
['*023', 'BRC', 'LON', '2020-09-07 08:30:00+00:00', '2020-09-07 13:50:18+00:00', 'Espanola', '', '', 'Unkown'],
 ['nodigit', 'BRC', 'LON', '2020-09-07 03:00:03+00:00', '2020-09-07 23:30:01+00:00', 'Espanola', '', '', 'Unkown'], 
['++158', 'BRC', 'LON', '2020-09-07 05:42:05+00:00', '2020-09-07 10:02:01+00:00', 'Espanola', '', '', 'Unkown'], 
['*021', 'BRC', 'LON', '2020-09-07 08:26:07+00:00', '2020-09-07 09:34:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['*023', 'BRC', 'LON', '2020-09-07 08:30:00+00:00', '2020-09-07 13:50:18+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['nodigit', 'BRC', 'LON', '2020-09-07 03:00:03+00:00', '2020-09-07 23:30:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['++158', 'BRC', 'LON', '2020-09-07 05:42:05+00:00', '2020-09-07 10:02:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['*021', 'BRC', 'LON', '2020-09-07 08:26:07+00:00', '2020-09-07 09:34:01+00:00', 'Espanola', '', '', 'Unkown'], 
['*023', 'BRC', 'LON', '2020-09-07 08:30:00+00:00', '2020-09-07 13:50:18+00:00', 'Espanola', '', '', 'Unkown'], 
['nodigit', 'BRC', 'LON', '2020-09-07 03:00:03+00:00', '2020-09-07 23:30:01+00:00', 'Espanola', '', '', 'Unkown'], 
['++158', 'BRC', 'LON', '2020-09-07 05:42:05+00:00', '2020-09-07 10:02:01+00:00', 'Espanola', '', '', 'Unkown'], 
['*021', 'BRC', 'LON', '2020-09-07 08:26:07+00:00', '2020-09-07 09:34:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'],
['*023', 'BRC', 'LON', '2020-09-07 08:30:00+00:00', '2020-09-07 13:50:18+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'],
[ 'nodigit', 'BRC', 'LON', '2020-09-07 03:00:03+00:00', '2020-09-07 23:30:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['++158', 'BRC', 'LON', '2020-09-07 05:42:05+00:00', '2020-09-07 10:02:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['*021', 'BRC', 'LON', '2020-09-07 08:26:07+00:00', '2020-09-07 09:34:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'],
['*023', 'BRC', 'LON', '2020-09-07 08:30:00+00:00', '2020-09-07 13:50:18+00:00', 'BALEARIA','BALEARIA', '', 'Unkown'], 
['nodigit', 'BRC', 'LON', '2020-09-07 03:00:03+00:00', '2020-09-07 23:30:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'],
['++158', 'BRC', 'LON', '2020-09-07 05:42:05+00:00', '2020-09-07 10:02:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['*021', 'BRC', 'LON', '2020-09-07 08:26:07+00:00', '2020-09-07 09:34:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'],
['*023', 'BRC', 'LON', '2020-09-07 08:30:00+00:00', '2020-09-07 13:50:18+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'],
['nodigit', 'BRC', 'LON', '2020-09-07 03:00:03+00:00', '2020-09-07 23:30:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['++158', 'BRC', 'LON', '2020-09-07 05:42:05+00:00', '2020-09-07 10:02:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'],
['200', 'BRC', 'LON', '2020-09-07 05:08:32+00:00', '2020-09-07 13:05:00+00:00', 'BALEARIA', 'BALEARIA', '', 'Gere  INT', 'PC', 'INT'], 
['*021', 'BRC', 'LON', '2020-09-07 08:26:07+00:00', '2020-09-07 09:34:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['*023', 'BRC', 'LON', '2020-09-07 08:30:00+00:00', '2020-09-07 13:50:18+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['nodigit', 'BRC', 'LON', '2020-09-07 03:00:03+00:00', '2020-09-07 23:30:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown'], 
['++158', 'BRC', 'LON', '2020-09-07 05:42:05+00:00', '2020-09-07 10:02:01+00:00', 'BALEARIA', 'BALEARIA', '', 'Unkown']]
 

Tags: if数字readerintrowiblonpc
1条回答
网友
1楼 · 发布于 2024-06-07 21:09:19

把你的台词换成它

if check_digit is False: #if its not digit
      result_list.append(x + ["Unkown"] + ["Unkown"] + [""] + ["Unkown"])

您正在将[row[3]]+[row[4]]+[row[5]]添加到x

******完整代码******

table_x = r"table_x.txt"

result_list = []
with open(table_x, "r") as outer:
    reader = csv.reader(outer, delimiter="\t")
    next(reader) #skip the first 4 lines
    next(reader)
    next(reader)
    next(reader)
    for row in reader:
        mini = row[1]  
        maxi = row[2]


        for x in new_to_csv:
            veh_number = x[0]
            check_digit = veh_number.isdigit()
            if check_digit:   #< - check if its digit
                if int(veh_number) > int(mini) and int(veh_number) < int(maxi):
                    result_list.append(x+ [row[3]]+ [row[4]]+ [row[5]]+ [row[6]]+ [row[7]]+ [row[8]])

    for x in new_to_csv:
        veh_number = x[0]
        check_digit = veh_number.isdigit()
        if check_digit is False: #if its not digit
            result_list.append(x + ["Unkown"] + ["Unkown"] + [""] + ["Unkown"])
print(result_list)

相关问题 更多 >

    热门问题