python str.format 와 탭 문자\t 중국어 정렬 에 대한 자세 한 문제
2932 단어 pythonstr.format탭 문자
이렇게:
정말 괴롭다!
#------------------------------------------
그 전에 python 의.format 포맷 출력 을 말씀 드 리 겠 습 니 다.
python 2.6 부터 str.format 를 사용 하여 쉽게 포맷 할 수 있 습 니 다.
위 에서 보 듯 이 변수 에 대한 처 리 는 간결 하고 유연 하 며 숫자 에 대한 각종 자릿수 처리 도 잘 되 어 있다.
{:
여기 서 주의해 야 할 것 은 x 도 변수 로 대 입 할 수 있다 는 것 이다.
#------------------------------------------
문제 해결 에 착수 하 다.
첫 번 째 반응 은\t 탭 문 자 를 사용 합 니 다.문 제 는 문자열 의 길이 차이 가 하나의 탭 위 치 를 초과 할 때 다음 탭 으로 넘 어 갑 니 다.그림 과 같 습 니 다.
받 아들 일 수 없습니다.str.format 을 사용 하여 name 속성의 길 이 를 25 로 보충 합 니 다.
결 과 는 이렇다.
py 좋 지만 일부 디 테 일 은 중국 어 를 배려 하지 않 았 습 니 다.
여기 길 이 를 채 울 때 중국어 문자 도 1 바이트 로 계산 합 니 다.
그러나 우 리 는 utf-8 에서 중국어 가 3 개의 바이트 를 차지 하고 GBK 에서 2 개의 바이트 를 차지 하 며 1 바이트 로 만 계산 하면 분명히 정렬 할 수 없다 는 것 을 알 고 있다.
이 때 prettytable 패키지 출력 표 에 도움 을 청 합 니 다.그러나 출력 도 이상 적 이지 않 습 니 다.중국어 인 코딩 문 제 를 고려 하지 않 았 다 고 상상 할 수 있 습 니 다.(또는 utf-8 또는 gbk 로 인 코딩 을 설정 해 야 합 니까?)
이상 적 인 name 이 차지 하 는 길 이 를 분석 하려 면 고정된 x 바이트 여야 합 니 다.
그럼 길 이 는...
len=22-gbk 인 코딩 name 의 바이트 수+name 의 문자 수
다행히도 str.format 는 길이 대신 변 수 를 사용 하 는 것 을 지원 합 니 다.
다음 코드 를 시도 해 보십시오:
print('[{name:<{len}}x'.format(name=name+']',len=22-len(name.encode('GBK'))+len(name)))
결 과 는 이상 에 매우 가깝다.아니면 일부 팬 들 의 문제 로 인해 1-0.5 바이트 길이 의 편차 가 생 겼 는데 중국어 글씨체 가 등 폭 글씨체 가 아니 기 때 문 일 까요?
그러나 걱정 하지 마 세 요.여 기 는 거 친 탭 문자\t 를 사용 하여 문 제 를 해결 할 수 있 습 니 다.
print('[{name:<{len}}\tx'.format(name=name+']',len=22-len(name.encode('GBK'))+len(name)))
큰 성 과 를 거두다.쟁쟁!
#------------------------------------------
뒷말
이번에 쓴 것 은 주로 몇 개의 주요 거래 사이트 와 steam 에서 dota 2 액세서리 가격 을 얻 는 파충류 인 데 그 중에서 발생 하 는 문제 도 매우 많다.예 를 들 어 로그 인 동태 로드 등 이다.
잘 쓰 면 아마 같이 올 라 올 거 예요.
이상 python str.format 와 탭 문자\t 의 중국어 정렬 에 관 한 세부 적 인 문 제 는 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.참고 하 시기 바 랍 니 다.여러분 들 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.