re."예기된 문자열 또는 바이트와 유사한 개체"로 하위 오류가 발생
저는 이 오류에 대한 게시물을 여러 번 읽었지만 아직도 이해할 수 없습니다.내 기능을 반복하려고 할 때:
def fix_Plan(location):
letters_only = re.sub("[^a-zA-Z]", # Search for all non-letters
" ", # Replace all non-letters with spaces
location) # Column and row to search
words = letters_only.lower().split()
stops = set(stopwords.words("english"))
meaningful_words = [w for w in words if not w in stops]
return (" ".join(meaningful_words))
col_Plan = fix_Plan(train["Plan"][0])
num_responses = train["Plan"].size
clean_Plan_responses = []
for i in range(0,num_responses):
clean_Plan_responses.append(fix_Plan(train["Plan"][i]))
다음은 오류입니다.
Traceback (most recent call last):
File "C:/Users/xxxxx/PycharmProjects/tronc/tronc2.py", line 48, in <module>
clean_Plan_responses.append(fix_Plan(train["Plan"][i]))
File "C:/Users/xxxxx/PycharmProjects/tronc/tronc2.py", line 22, in fix_Plan
location) # Column and row to search
File "C:\Users\xxxxx\AppData\Local\Programs\Python\Python36\lib\re.py", line 191, in sub
return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object
댓글에서 말씀하신 것처럼 일부 값은 문자열이 아닌 플로트로 표시되었습니다.에 전달하기 전에 문자열로 변경해야 합니다.re.sub
가장 간단한 방법은 변화하는 것입니다.location
로.str(location)
사용 시re.sub
어차피 이미 시작된 일이라 해도 해가 되지 않을 것 같아요.str
.
letters_only = re.sub("[^a-zA-Z]", # Search for all non-letters
" ", # Replace all non-letters with spaces
str(location))
가장 간단한 솔루션은 Python을 적용하는 것입니다. str
루프하려는 열에 대한 함수입니다.
사용 중인 경우pandas
이는 다음과 같이 구현될 수 있습니다.
dataframe['column_name']=dataframe['column_name'].apply(str)
저도 같은 문제가 있었습니다.그리고 제가 무언가를 할 때마다, 그 문제가 해결되지 않았다는 것은 매우 흥미로운 일입니다. 제가 그 끈에 두 개의 특별한 문자가 있다는 것을 깨닫기 전까지는 말이죠.
예를 들어, 텍스트에는 두 개의 문자가 있습니다.
‎
(Left-to-Right Mark) 그리고‌
(제로 폭 비조인)
저에게 해결책은 이 두 글자를 삭제하는 것이었고 문제는 해결되었습니다.
import re
mystring = "‎Some Time W‌e"
mystring = re.sub(r"‎", "", mystring)
mystring = re.sub(r"‌", "", mystring)
이것이 저처럼 문제가 있는 사람에게 도움이 되었기를 바랍니다.
re.match() 함수를 사용하는 것이 더 나을 것 같습니다.여기 당신을 도울 수 있는 예가 있습니다.
import re
import nltk
from nltk.tokenize import word_tokenize
nltk.download('punkt')
sentences = word_tokenize("I love to learn NLP \n 'a :(")
#for i in range(len(sentences)):
sentences = [word.lower() for word in sentences if re.match('^[a-zA-Z]+', word)]
sentences
Python에서의 내 경험에 따르면, 이것은 re.findall() 함수에 사용된 두 번째 인수의 None 값에 의해 발생합니다.
import re
x = re.findall(r"\[(.*?)\]", None)
하나는 이 코드 샘플로 오류를 재현합니다.
이 오류 메시지를 방지하려면 null 값을 필터링하거나 처리에서 제외할 조건을 추가할 수 있습니다.
언급URL : https://stackoverflow.com/questions/43727583/re-sub-erroring-with-expected-string-or-bytes-like-object
'programing' 카테고리의 다른 글
ASP의 경우 "모델을 만드는 동안에는 컨텍스트를 사용할 수 없습니다." 예외입니다.NET 아이덴티티 (0) | 2023.08.23 |
---|---|
UIView에서 두 모서리를 둥글게 만듭니다. (0) | 2023.08.23 |
빠져나오지 않고 html을 핸들 바 템플릿에 삽입합니다. (0) | 2023.08.23 |
Android Studio 3.0 Flavor Dimension 문제 (0) | 2023.08.23 |
Spring boot - 백업 로그 파일 수가 7개로 제한됨 (0) | 2023.08.23 |