Python 重新应用/搜索类型错误:"NoneType"对象不可下标



有人能解释我为什么会出现这个错误以及如何修复它吗?我正试图搜索98-99年的标题,我想得到第一部分(98(:

示例标题:CAR EBC 98-99

TypeError: 'NoneType' object is not subscriptable

在yearmin行是发生错误的地方。

import pandas as pd
import re
fileinString = 'a.csv'
df1 = pd.read_csv(fileinString, sep=",")
# split title of df1 into string and year tag min and year tag max
regular_expression = re.compile(r'dd-dd')
title_string = df1['*Title']

year_min = title_string.apply(lambda x: regular_expression.search(x)[0].split('-')[0])
year_max = df1['*Title'].apply(lambda x: regular_expression.search(x)[0].split('-')[1])
print(year_min)

关闭它正在运行但不起作用的示例:https://ideone.com/JANVt2

您得到的异常通常用于尝试使用括号表示法访问包含None的变量中的数据。

x = None
x[0]
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: 'NoneType' object is not subscriptable

我想说的是,标题字符串中的一个文本值不包含您要查找的模式,对于该模式regular_expression.search(x(返回None。

处理这些情况的一种方法是为您在列上应用的函数添加一些逻辑。大致如下:

def extract_pattern(txt):
match = regular_expression.search(txt)
if match is None:
return 'NOT FOUND'
return match.groups(0).split('-')[0]
year_min = title_string.apply(extract_pattern)

这是由于您的df1['*Title']的值与此模式不匹配

当它在字符串中找到模式时,重新运行

In [18]: regular_expression = re.compile(r'dd-dd')
In [19]: regular_expression.search('12-18')
Out[19]: <_sre.SRE_Match object; span=(0, 5), match='12-18'>

Where as when not find it return None

In [20]: regular_expression.search('1218') ==None
Out[20]: True

和None不可下标即你不能做无[0]

所以最终你有效地做的是

In [21]: None[0]
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-21-4b6604f77809> in <module>
----> 1 None[0]
TypeError: 'NoneType' object is not subscriptable

最新更新