Python 문자열에서 \xa0을 삭제하는 방법
저는 현재 아름다운 수프를 사용하여 HTML 파일을 해석하고 전화를 걸고 있습니다.get_text()
공간을 나타내는 \xa0 유니코드가 많이 남아 있는 것 같습니다.Python 2.7에서 그것들을 모두 제거하고 스페이스로 바꿀 수 있는 효율적인 방법이 있을까요?더 일반적인 질문은 유니코드 포맷을 제거할 방법이 있는가 하는 것입니다.
다음을 사용해 보았습니다.line = line.replace(u'\xa0',' ')
다른 스레드에서 제안되었듯이 \xa0이 u로 변경되었기 때문에 대신 "u"가 곳곳에 표시됩니다.):
편집: 이 문제는 다음 방법으로 해결된 것 같습니다.str.replace(u'\xa0', ' ').encode('utf-8')
, 하지만 그냥 하고 있습니다..encode('utf-8')
없이.replace()
예를 들어 \xc2와 같이 더 이상한 문자를 뱉어내는 것 같습니다.누가 이걸 설명할 수 있나요?
\xa0은 실제로는 Latin1(ISO 8859-1), chr(160)로 구분되지 않는 공간입니다.공백으로 대체해야 합니다.
string = string.replace(u'\xa0', u' ')
.encode('utf-8')에서는 유니코드를 utf-8로 인코딩합니다.즉, 모든 유니코드를 1~4바이트로 나타낼 수 있습니다.이 경우 \xa0은 2바이트 \xc2\xa0으로 표시됩니다.
http://docs.python.org/howto/unicode.html에서 자세히 읽어보십시오.
참고: 2012년부터 이 답변은 Python이 이동했습니다. 당신은 사용할 수 있을 것입니다.unicodedata.normalize
지금이다
Python에는 유용한 것들이 많이 있습니다.unicodedata
도서관.그 중 하나는 기능이다.
시험:
new_str = unicodedata.normalize("NFKD", unicode_str)
원하는 결과를 얻을 수 없는 경우 위의 링크에 나열된 다른 방법으로 NFKD를 대체합니다.
몇 가지 방법을 시도해 본 결과, 요약하자면, 저는 이렇게 했습니다.다음으로 해석된HTML 문자열에서 \xa0 문자를 회피 또는 삭제하는2가지 방법을 나타냅니다.
다음과 같은 raw html이 있다고 가정합니다.
raw_html = '<p>Dear Parent, </p><p><span style="font-size: 1rem;">This is a test message, </span><span style="font-size: 1rem;">kindly ignore it. </span></p><p><span style="font-size: 1rem;">Thanks</span></p>'
다음 HTML 문자열을 삭제해 보겠습니다.
from bs4 import BeautifulSoup
raw_html = '<p>Dear Parent, </p><p><span style="font-size: 1rem;">This is a test message, </span><span style="font-size: 1rem;">kindly ignore it. </span></p><p><span style="font-size: 1rem;">Thanks</span></p>'
text_string = BeautifulSoup(raw_html, "lxml").text
print text_string
#u'Dear Parent,\xa0This is a test message,\xa0kindly ignore it.\xa0Thanks'
위의 코드에서는 문자열에 이러한 문자 \xa0이 생성됩니다.제대로 제거하기 위해서는 두 가지 방법을 사용할 수 있습니다.
방법 # 1(권장):첫 번째 방법은 Strip 인수를 True로 하는 BeautifulSoup의 get_text 메서드입니다.그러면 코드는 다음과 같습니다.
clean_text = BeautifulSoup(raw_html, "lxml").get_text(strip=True)
print clean_text
# Dear Parent,This is a test message,kindly ignore it.Thanks
방법 # 2: 다른 옵션은 python의 라이브러리 unicodata를 사용하는 것입니다.
import unicodedata
text_string = BeautifulSoup(raw_html, "lxml").text
clean_text = unicodedata.normalize("NFKD",text_string)
print clean_text
# u'Dear Parent,This is a test message,kindly ignore it.Thanks'
이 블로그에도 이 방법을 자세히 기재하고 있으므로 참고하시기 바랍니다.
행 끝에 .strip()를 사용해 보십시오.line.strip()
나는 잘했다
이것을 시험해 보세요.
string.replace('\\xa0', ' ')
python을 사용하여 sqlite3 데이터베이스에서 데이터를 가져오는 것과 같은 문제가 발생했습니다.위의 답변은 납득이 가지 않았지만(이유는 확실하지 않습니다) 다음과 같습니다.line = line.decode('ascii', 'ignore')
그러나 제 목표는 공백으로 대체하는 것이 아니라 \xa0을 삭제하는 것이었습니다.
네드 바첼더가 쓴 아주 유용한 유니코드 튜토리얼에서 얻은 거야
이 코드를 사용해 보세요.
import re
re.sub(r'[^\x00-\x7F]+','','paste your string here').decode('utf-8','ignore').strip()
에 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」split
합니다.
line = ' '.join(line.split())
인쇄 불가능한 캐릭터의 문제를 검색하다 여기까지 오게 되었습니다. MySQL 중UTF-8
general_ci
문자열에 같이 해야 합니다.문제가 있는 문자열의 경우 다음과 같이 처리해야 합니다.
text=text.replace('\xc2\xa0', ' ')
이것은 간단한 회피책일 뿐이며, 적절한 부호화 설정을 사용해 보는 것이 좋습니다.
' 국물은 '아름다운 국물', '아름다운 국물', '아름다운 국물'이라고 할 수 .get_text()
합니다.strip: 스의의 from from from the the 。 이이가 삭제됩니다.\xa0
또는 문자열의 시작 또는 끝에 공백이 있을 경우 공백이 표시됩니다.'는 빈 을 '아름다운 수프'로 했다.\xa0
이렇게 해서 문제가 해결됐어요.
mytext = soup.get_text(strip=True)
스페이스 문자와 같기 때문에, 떼어내 주세요.
print(string.strip()) # no more xa0
입니다.UTF-8은 0xA0(유니코드)) 0xC2A0으로 하다..encode('utf8')
0xA0 UTF-8 0xC2A0 로 a a a a a a a a a a a0xC2는...이치노 을 사용하다
정규 표현을 사용하는 일반 버전(모든 제어 문자를 제거합니다):
import re
def remove_control_chart(s):
return re.sub(r'\\x..', '', s)
해 보세요.string.strip()
에겐 효과가 있었어 :) 있 : : : : :))! :)
이렇게 해서 html 인코딩 문자열에서 \xao가 발생했기 때문에 이 문제를 해결했습니다.
페이지 크기 변경으로 인해 단어와 후속 HTML 마크업이 분리되지 않도록 None breaking space가 삽입되어 있는 것을 발견했습니다.
이로 인해 코덱 부호화 문제가 발생했기 때문에 해석 코드에 문제가 있습니다.어려운 것은 사용된 인코딩에 대한 지식이 없다는 것입니다.Windows 머신에서는 latin-1 또는 CP1252(Western ISO)를 사용할 수 있지만 최신 OS는 UTF-8로 표준화되어 있습니다.Unicode 데이터를 정규화함으로써 \xa0을 삭제합니다.
my_string = unicodedata.normalize('NFKD', my_string).encode('ASCII', 'ignore')
언급URL : https://stackoverflow.com/questions/10993612/how-to-remove-xa0-from-string-in-python
'IT' 카테고리의 다른 글
저장된 이미지 주위의 공백 제거 (0) | 2022.10.19 |
---|---|
시스템인 이유Java 네이티브 어레이 복사 (0) | 2022.10.19 |
두 열의 조합을 위한 양방향 고유 키 제약 조건 (0) | 2022.10.19 |
높이가 100%인 풀스크린 iframe (0) | 2022.10.19 |
선택한 라디오 버튼의 값을 가져오려면 어떻게 해야 합니까? (0) | 2022.10.18 |