Python 문자열이 [u'String']으로 인쇄됨
이것은 분명 쉬운 것이 될 것이지만 정말로 나를 괴롭힙니다.
저는 웹 페이지에서 읽고 아름다운 수프를 사용하여 구문 분석하는 스크립트를 가지고 있습니다.수프에서 모든 링크를 추출합니다. 최종 목표는 link.contents를 출력하는 것입니다.
제가 구문 분석하는 모든 텍스트는 ASCII입니다.저는 파이썬이 문자열을 유니코드로 취급한다는 것을 알고 있으며, 이것이 매우 유용하다고 확신합니다. 단지 제 웹 스크립트에서는 아무 소용이 없습니다.
'갈마다 'String', 'String', 'String', 'String', 'String', 'String', 'String', 'String', 'String', 'String'이.[u'String']화면에 인쇄됩니다.이것을 아스키로 되돌리는 간단한 방법이 있습니까? 아니면 정규식을 써서 제거해야 합니까?
[u'ABC']유니코드 문자열의 한 자리 목록입니다.아름다운 수프는 항상 유니코드를 만듭니다.따라서 목록을 단일 유니코드 문자열로 변환한 다음 ASCII로 변환해야 합니다.
나는 당신이 어떻게 하나의 요소 리스트를 얻었는지 정확히 알지 못합니다. 컨텐츠 멤버는 문자열과 태그의 목록일 것입니다. 이것은 분명히 당신이 가지고 있는 것이 아닙니다.항상 단일 요소가 포함된 목록이 표시되고 테스트가 ASCII로만 이루어진다고 가정하면 다음을 사용합니다.
soup[0].encode("ascii")
하지만 당신의 데이터가 정말 ASCII인지 다시 한번 확인해주세요.이것은 꽤 드문 일입니다.라틴어-1이나 utf-8일 가능성이 높습니다.
soup[0].encode("latin-1")
soup[0].encode("utf-8")
또는 Beautiful Soup에게 원래 인코딩이 무엇인지 물어보고 다음 인코딩으로 다시 가져옵니다.
soup[0].encode(soup.originalEncoding)
하나의 유니코드 문자열을 포함하는 목록이 있을 수 있습니다. 그repr에서 중서에이입니다.[u'String'].
다음과 같은 변형을 사용하여 이 값을 바이트 문자열 목록으로 변환할 수 있습니다.
# Functional style.
print map(lambda x: x.encode('ascii'), my_list)
# List comprehension.
print [x.encode('ascii') for x in my_list]
# Interesting if my_list may be a tuple or a string.
print type(my_list)(x.encode('ascii') for x in my_list)
# What do I care about the brackets anyway?
print ', '.join(repr(x.encode('ascii')) for x in my_list)
# That's actually not a good way of doing it.
print ' '.join(repr(x).lstrip('u')[1:-1] for x in my_list)
import json, ast
r = {u'name': u'A', u'primary_key': 1}
ast.literal_eval(json.dumps(r))
인쇄 예정
{'name': 'A', 'primary_key': 1}
단일 요소 목록에 액세스/인쇄하는 경우(예: 순차적으로 또는 필터링됨):
my_list = [u'String'] # sample element
my_list = [str(my_list[0])]
출력을 str() 함수로 전달하면 유니코드 출력 u''를 제거하고 출력을 인쇄하여 u' 태그를 제거합니다.
은 정말로 니까입말정을 의미합니까?u'String'?
어쨌든, 당신은 그냥 할 수 없어요.str(string)유코드문 아문을얻것는열자닌이 ? 3의.)(모든 문자열이 유니코드인 Python 3에서는 달라야 합니다.)
[u'String']Python 2의 유니코드 문자열이 포함된 목록의 텍스트 표현입니다.
실행하는 경우print(some_list)그렇다면 그것은 다음과 같습니다.
print'[%s]' % ', '.join(map(repr, some_list))즉, Python 객체의 텍스트 표현을 다음과 같이 만듭니다.list,repr()각 항목에 대해 함수가 호출됩니다.
Python 객체와 텍스트 표현을 혼동하지 마십시오.repr('a') != 'a'텍스트 표현의 텍스트 표현도 다릅니다.repr(repr('a')) != repr('a').
repr(obj)개체의 인쇄 가능한 표현을 포함하는 문자열을 반환합니다.REPL의 목적은 REPL에서 디버깅에 유용할 수 있는 개체를 명확하게 표현하는 것입니다.자주eval(repr(obj)) == obj.
전화를 피하는 방법repr()목록 항목을 직접 인쇄할 수 있습니다(모두 유니코드 문자열인 경우). 예: print ",".join(some_list)—콤마로 구분된 문자열 목록을 인쇄합니다.String
하드코딩된 문자 인코딩을 사용하여 유니코드 문자열을 바이트로 인코딩하지 말고 유니코드를 직접 인쇄합니다.그렇지 않으면 인코딩이 모든 문자를 나타낼 수 없기 때문에 코드가 실패할 수 있습니다. 예를 들어 사용하려고 할 경우'ascii'암호화되지 않은 문자로 인코딩합니다.또는 환경에서 하드 코딩된 인코딩과 호환되지 않는 인코딩을 사용하는 경우 코드가 자동으로 Mojibake(손상된 데이터가 파이프라인에서 추가로 전달됨)를 생성합니다.
사용하다dir또는type그것이 무엇인지 알아내기 위해 '끈'에.저는 BeautifulSoup의 태그 오브젝트 중 하나라고 생각합니다. 끈처럼 인쇄되지만 실제로는 그렇지 않습니다.그렇지 않으면 목록 내부에 있으므로 각 문자열을 개별적으로 변환해야 합니다.
어쨌든 유니코드를 사용하는 것에 반대하는 이유는 무엇입니까?특별한 이유라도?
encode("latin-1")제 경우에 도움이 되었습니다.
facultyname[0].encode("latin-1")
언급URL : https://stackoverflow.com/questions/599625/python-string-prints-as-ustring
'programing' 카테고리의 다른 글
| 속성이 'IntrinsicAttributes & {children?' 유형에 없습니다.ReactNode; }' (0) | 2023.07.11 |
|---|---|
| Typescript 3.0에서 Tuple을 다른 Tuple 유형으로 '매핑'하는 방법 (0) | 2023.07.11 |
| C와 C++ # include 디렉티브에서 백슬래시를 사용할 수 있습니까? (0) | 2023.07.06 |
| Android: 버튼 또는 이미지 버튼의 텍스트와 이미지 결합 (0) | 2023.07.06 |
| redistrepect_cast의 C에 해당하는 것은 무엇입니까? (0) | 2023.07.06 |