Найти шаблон строки в списках Python - PullRequest
0 голосов
/ 07 февраля 2019

Я новичок в python и буду просить о любой помощи.

У меня есть текстовый файл, в котором я должен выполнить некоторую очистку, а именно я должен удалить некоторые строковые шаблоны из строк.Ниже, что я сделал до сих пор:

f = open("myfile.txt", "r")

mylist = []
for i in f:
    mylist.append(i.strip().split('\t')) #removing newlines '\n'

for i in range(0, len(mylist)): # iterate the list to find the string pattern
    #if "@@" in mylist[i]: # I have tried this as well
    if mylist[i].count('@@') > 0:    
        print(mylist[i])
    else:
        print('NOT')

Этот код не находит нужный шаблон строки.

Ответы [ 4 ]

0 голосов
/ 07 февраля 2019
import re    
data = [line 
        for line in f.readlines() 
        if re.findall(r'@@', line)] # iterate the list to 
0 голосов
/ 07 февраля 2019

Я бы сделал это намного проще:

for line in f.readlines(): 
    if '@@' in line:
        print(line)
    else:
        print('NOT')
0 голосов
/ 07 февраля 2019

вы можете попробовать это, чтобы удалить шаблон напрямую.Зачем добавлять сложность, сначала выполняя поиск, а затем удаляя?

mylist = []
for i in f:
    # you can use readline() function here
    mylist.append(i.strip().split('\t')) #removing newlines '\n'

my_new_list = [mystr.replace("@@",'') for mystr in mylist]

Вы также можете сделать это в одну строку следующим образом:

with open('your_file_path_here','r') as f:
    print([mystr.replace("@@",'') for mystr in f.readlines()])
0 голосов
/ 07 февраля 2019

Вы можете попробовать следующую функцию: find () .Возвращает позицию, где найдена подстрока.

if ("@@".find(mylist[i]) != -1):
    print(mylist[i])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...