TYPERROR: ожидаемая строка или байтовый объект при использовании re.findall - PullRequest
0 голосов
/ 20 июня 2020

КОД:

def multi_re_find(patterns,phrase):

    for pat in patterns:
        print("Searching for pattern {}".format(pat))
        print(re.findall(pat,phrase))
        # print(pat.findall(phrase))
        print("\n")

test_phrase1 = ["This is a string! But it has punctuation. How can we remove it?"]
test_pattern1 = ['[^!.? ]+']

multi_re_find(test_pattern1,test_phrase1)

ОШИБКА:

Searching for pattern [^!.? ]+
Traceback (most recent call last):
  File "C:\Users\DELL\github\Python\Python_Level_Two\Regular_Expressions.py", line 67, in <module>
    multi_re_find(test_pattern1,test_phrase1)
  File "C:\Users\DELL\github\Python\Python_Level_Two\Regular_Expressions.py", line 33, in multi_re_find
    print(re.findall(pat,phrase))
  File "C:\Users\DELL\anaconda3\lib\re.py", line 223, in findall
    return _compile(pattern, flags).findall(string)
TypeError: expected string or bytes-like object

1 Ответ

1 голос
/ 20 июня 2020

Перебирать строки в списке phrase:

import re

def multi_re_find(patterns,phrase):
    for phrase_s in phrase:          # phrase_s is a string
        for pat in patterns:
            print("Searching for pattern '{}' in '{}'".format(pat, phrase_s))
            print(re.findall(pat,phrase_s))
            print("\n")

test_phrase1 = ["This is a string! But it has punctuation. How can we remove it?"]
test_pattern1 = ['[^!.? ]+']

multi_re_find(test_pattern1,test_phrase1)

Python demo

Вывод:

Searching for pattern '[^!.? ]+' in 'This is a string! But it has punctuation. How can we remove it?'
['This', 'is', 'a', 'string', 'But', 'it', 'has', 'punctuation', 'How', 'can', 'we', 'remove', 'it']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...