Чтение файла - соответствие строки со списком - PullRequest
0 голосов
/ 01 апреля 2019

Я читаю файл с Python, который я хочу извлечь только те строки, которые соответствуют некоторому содержимому.'\ Моя проблема: если я передаю только одну строку для соответствия, я могу это сделать (как в коде ниже)'

import sys,os
import re
import pandas as pd

path = 'file'
sports = ['Sports', 'Nature']
keyword = 'Sports'
data = pd.DataFrame([])

with open(path) as auto:
  for line in auto:
    if keyword in line:
        print(line)

Я передаю список, я не могу получить ни одной строки:

with open(path) as auto:
  for line in auto:
    if any(x in errors for x in line):
        print(line)

Кто-нибудь знает, как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Пожалуйста, просмотрите разницу, когда вы перебираете str и list,

>>> keyword = ['sports', 'something else']
>>> line = "line that has a word sports in it"
>>> 'sports' in line
True
>>> any(x in keyword  for x in line.split()) # iterating over list
True
>>> any(x in keyword  for x in line) # iterating over each characters in an string
False
0 голосов
/ 01 апреля 2019

Вы можете использовать альтернативу, используя понимание списка:

file = [line.lower() for line in open(path).readlines()]
required_line = [line for text in keyword for line in file if text.lower() in line]

По вашему методу вы что-то упустили:

with open(path) as auto:
    for line in auto:
        if any(x for x in keyword for x in line):
            print(lines)
...