用Python替换csv中字符串的中间部分

2024-07-04 09:04:09 发布

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

我试图替换csv第一列中的字符串,但遇到了一些问题,即“AttributeError:NoneType object has no attribute 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])
    print(m.group(),end='\n\n')
    item[0] = m.group()
    print(item,end='\n\n')

````

但是,当试图在一个脚本中实现这一点时,打开一个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中得到了匹配。任何帮助都将不胜感激。谢谢


Tags: csvre错误group数组xmlitemarray
1条回答
网友
1楼 · 发布于 2024-07-04 09:04:09

使用re.search时,如果找不到匹配项,函数将返回None,如果出现这种情况,代码将转换为None.group(),这就是您看到的错误。要解决此问题,请先检查search是否找到任何内容:

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')

相关问题 更多 >

    热门问题