Итак, вчера я получил свое регулярное выражение для печати строка за строкой. Сегодня я удалил свой оператор if, установил «результат» равным регулярному выражению, чтобы я мог добавить его в свой список. Ну, это сломало мой (dns+'\n'). Может родственно или нет. ошибка, которая отображается для меня, заключается в следующем.
dns.append(result+'\n')
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'
Код:
import re
import pandas as pd
dns = []
addstrip = []
with open('ns.txt', 'r') as file:
lines = file.read().splitlines()
for line in lines:
#result = (re.search(r'(\W\S+)(\.)(\S+)(\.)(\S\S\S+)', line))
result = (re.search(r'^(add lb vserver) (\S+)(\.)(\S+)(\.)(\S+)', line))
dns.append(result+'\n')
print(dns)
with open('dnsout.txt', 'w') as f:
f.writelines(str(dns))
Вывод без '\n'
[None]
[None, None]
[None, None, None]
[None, None, None, None]
[None, None, None, None, None]
[None, None, None, None, None, None]
СТАРЫЙ код:
dns = []
with open('ns.txt', 'r') as file:
lines = file.read().splitlines()
for line in lines:
if re.search(r'^(add lb vserver )(\S+) (\S+) (\S+)(.+)$', line):
dns.append(line)
print(dns)
with open('dnsout.txt', 'w') as f:
f.writelines(lines)
Более поздний вывод после «Нет»:
match='add lb vserver SSL_INT_unucrepSL.oncologysupply.c>, <_sre.SRE_Match object; span=(0, 51), match='add lb vserver SSL_EXT_unucrepSL.oncologysupply.c>, <_sre.SRE_Match object; span=(0, 57), match='add lb vserver SSL_INT_hotfixunucrepsl.oncologysu>, <_sre.SRE_Match object; span=(0, 57), match='add lb vserver SSL_EXT_hotfixunucrepsl.oncologysu>, <_sre.SRE_Match object; span=(0, 57), match='add lb vserver SSL_EXT_hotfixunucwcfsl.oncologysu>, <_sre.SRE_Match object; span=(0, 57), match='add lb vserver SSL_INT_hotfixunucwcfsl.oncologysu>, <_sre.SRE_Match object;
В приведенном выше коде я распечатывал не результаты регулярного выражения, а всю строку. Вывод был построчным, хотя, возможно, результаты регулярных выражений имеют другой тип данных?
Панды используются позже в коде ниже, поэтому вы можете игнорировать. Как можно разделить по строке? Я предполагаю, что мне нужно будет преобразовать его в какой-то другой тип, который может принимать +'\n'. Любая помощь, советы или уловки приветствуются. Спасибо за чтение.
None
был заменен пустой строкой''
, или это приведет к проблемам позже? - person Jongware   schedule 07.02.2018re.search
не находит соответствия, то есть возвращаетNone
, и вы не можете добавитьNone
иstr
. - person Ken White   schedule 07.02.2018