我正在尝试替换csv第一栏中的字符串,并且遇到了一些问题,即“ AttributeError:NoneType对象没有属性组”错误。当使用这样的代码作为测试时,一切正常。
```
import re
array = [['aaa-bbb-ccc_dddL_eee_V00T00000-00_00000_V00T00000-00_00000_ACK_00000000.XML', '907 ', 'Sep 13 2018 18:07', ' '], ['V11T11111-11_11111_V11T11111-11_11111_ACK_11111111.XML', '875','Jan 31 2018 00:00',' ']]
print(array, end='\n\n')
for item in array:
m = re.search(r'(\D\d+\D\d+\-\d+)', item[0])
print(m.group(),end='\n\n')
item[0] = m.group()
print(item,end='\n\n')
```
但是,当尝试在打开一个csv的脚本中实现此功能时,该csv具有一个结构相似的数组(该数组中还有更多的数组),我收到NoneType错误。
```
with open('./input.csv', 'r') as f:
reader = csv.reader(f)
for row in read`enter code here`er:
m = re.search(r'(\D\d+\D\d+\-\d+)', row[0])
row[0] = m.group()
```
我不太确定为什么第二种实现不起作用,因为我确实在csv中获得了匹配。任何帮助将不胜感激。谢谢。
答案 0 :(得分:0)
使用re.search时,如果找不到匹配项,则该函数将返回None,并且在发生这种情况时,您的代码将转换为None.group(),这是您看到的错误。要解决此问题,请检查搜索是否首先找到了任何东西:
import re
array = [['aaa-bbb-ccc_dddL_eee_V00T00000-00_00000_V00T00000-00_00000_ACK_00000000.XML', '907 ', 'Sep 13 2018 18:07', ' '], ['V11T11111-11_11111_V11T11111-11_11111_ACK_11111111.XML', '875','Jan 31 2018 00:00',' ']]
print(array, end='\n\n')
for item in array:
m = re.search(r'(\D\d+\D\d+\-\d+)', item[0])
if m:
print(m.group(),end='\n\n')
item[0] = m.group()
print(item,end='\n\n')