Я использую Python3, чтобы попытаться подражатьПечать строки, содержащие строки: Странное поведение
awk '/STRING/'
Я сделал некоторый код, который работает, но он останавливается на первом случае вместо того, чтобы найти все строки, содержащие указанный символ/строка.
После того как я сделал код, я видел эти две страницы, но предложения не работают
Print line containing "word" python
Search and get a line in Python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#Made by Devyn Collier Johnson, NCLA, Linux+, LPIC-1, DCTS
def cat(openfile): #Emulates cat#
with open(openfile) as file:
lines = file.readlines()
return ''.join(lines)
def GETLINEWITH(FILECONTENTS, CONTAINING):
for item in FILECONTENTS.split('\n'):
if CONTAINING in item:
return item.strip()
print(GETLINEWITH(cat('./Base.xaiml'), 'terminal'))
У меня есть файл (./Base.xaiml) который содержит несколько экземпляров слова «терминал». Я использую этот файл и строку для тестирования.
EDIT: Я также хочу, чтобы сохранить результаты в переменной -
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#Made by Devyn Collier Johnson, NCLA, Linux+, LPIC-1, DCTS
def cat(openfile): #Emulates cat#
with open(openfile) as file:
lines = file.readlines()
return ''.join(lines)
def GETLINEWITH(FILECONTENTS, CONTAINING):
for item in FILECONTENTS.split('\n'):
if CONTAINING in item:
print(item.strip()) #I implemented the give suggestion
VAR = GETLINEWITH(cat('./Base.xaiml'), 'terminal'))
Результаты:
я пытался Джон Клементс предложение:
with open('./Base.xaiml') as fin:
matching = ('terminal' in line for line in fin)
for line in matching:
VAR = matching
print(VAR)
Однако, выход - один адрес памяти. '.join() и group() не помогают.
Edit2:
Новейшие код вопросов - nonetype ошибка и выход не может быть сохранен в переменный
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#Made by Devyn Collier Johnson, NCLA, Linux+, LPIC-1, DCTS
def cat(openfile): #Emulates cat#
with open(openfile) as file:
lines = file.readlines()
return ''.join(lines)
def GETLINEWITH(FILECONTENTS, CONTAINING):
for item in FILECONTENTS.split('\n'):
if CONTAINING in item:
print(item.strip())
for line in GETLINEWITH(cat('./Base.xaiml'), 'terminal'):
print(line)
'cat' делает больше, чем прочитать файл. Речь идет о линиях con * cat *. – wim
Ответы, на которые вы ссылались, имеют рабочие решения - почему вы не просто используете один из тех, кто решит это? –
Ответы в этом вопросе работают, если вы измените 'print x' на' print (x) '. Ваша сложная логика «read-split-paste-split-search» не нужна. –