Получить элемент списка, содержащий строку, начинающуюся с '(', за которой следуют 12 alphanumeri c или специальные символы и заканчивающиеся на ')' в python - PullRequest
0 голосов
/ 04 мая 2020
  1. У меня есть файл .log, который содержит огромное количество строк, я могу получить определенные строки из этого файла, который содержит требуемую строку, с помощью простой команды grep и сохранить ее в файле .txt
  2. Теперь я могу прочитать только что созданный файл и разбить каждое слово на список
  3. Теперь мне нужно получить только элемент списка строк, который начинается с '(', за которым следуют 12 символов (генерируется случайным образом). содержащий alphanumeri c и специальные символы).

Это код, который я пробовал до этого момента.

import re
hand = open('ss.txt')

for line in hand:
    line = line.split(" ")
    print(line)
for ele in line:
    print(ele)    
    elementFound=re.match(r'[^(*A-Za-z*)]',ele)
print(element.groups()) 

Я получаю объект NoneType в ответ.

Пример списка, из которого я проверяю:

['', '', '<error', 'value="Linux/Unix', 'Update', 'script', 'with', 'Lock/Unlock', 'user', 
  'LC_ALL:', 'cannot', 'change', 'locale', '(MysoSe7zs7nw)\\nuid=1001(linuxuser1)', 
  'gid=100(users)', 'groups=100(users)\\nUpdated','user', 'account:', 'linuxuser1\\n\\nSuccessfully', 
  'established', 'session.', 'Script', 'execution', 
  'complete\\n0\\n"/>\n']

Мне нужно извлечь строку, содержащую элемент (MysoSe7zs7nw), в приведенном выше списке примеров.

1 Ответ

0 голосов
/ 04 мая 2020

Используйте r'([(].{12}[)])' в качестве регулярного выражения. Также print(elementFound.group(1))

Полный код:

import re
with open('ss.txt', 'r') as hand:
    for line in hand:
        for ele in line.split():
            element = re.search(r'([(].{12}[)])', ele)
            if element:
                print(element.group(1)) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...