Я пытаюсь заменить строку в первом столбце 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, который будет иметь массив аналогичной структуры (всего несколько массивов в массиве), я получаю ошибку 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. Любая помощь будет принята с благодарностью. Благодарю.
При использовании 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')
enter code here
?re.search
вернетNone
если совпадений не найдено, поэтому я предполагаю, что некоторые ваши данные не соответствуют вашему регулярному выражению.