문자열의 처음 100 자 출력


108

파이썬에서 부분 문자열 함수를 찾을 수 있습니다.

문자열의 처음 100 개 문자를 출력하려면 어떻게해야합니까?

나는 또한 그것을 안전하게하고 싶다. 문자열이 50 자라면 실패해서는 안된다.


2
이 질문에 대한 후속 조치는 다음과 같습니다. Python 슬라이스 표기법에 대한 좋은 입문서
Greg Hewgill

1
"캐릭터"란 무엇을 의미합니까? 코드 포인트, 자소 클러스터 또는 코드 단위? 슬라이싱은 코드 단위를 계산하므로 원하는 결과를 얻지 못할 수 있습니다.
Philipp

답변:


168
print my_string[0:100]

5
또한 예를 들어 문자열 (100)보다 짧은, 작동 print 'foo'[:100](주 len('foo')3 그래서 경우에도 foo[100]작동하지 않음, 그렇습니다)
로드리고 라구나

67

에서 파이썬 튜토리얼 :

디 제너 레이트 슬라이스 인덱스는 정상적으로 처리됩니다. 너무 큰 인덱스는 문자열 size로 대체되고, 하한보다 작은 상한은 빈 문자열을 반환합니다.

따라서 사용하는 것이 안전합니다 x[:100].



7

Philipp의 우려에 답하기 위해 (주석에서), slicing은 유니 코드 문자열에서도 잘 작동합니다.

>>> greek=u"αβγδεζηθικλμνξοπρςστυφχψω"
>>> print len(greek)
25
>>> print greek[:10]
αβγδεζηθικ

위의 코드를 스크립트로 실행하려면이 줄을 맨 위에 놓으십시오.

# -*- coding: utf-8 -*-

편집기가 utf-8로 저장하지 않으면 올바른 인코딩으로 대체하십시오.


2
답변을 비난하지만,이 일에만 24 문자 그리스어,하지 ςσ같은 문자를 :-)입니다
paxdiablo

4
@paxdiablo,도! 위키피디아 페이지에서 복사했습니다. 운 좋게도 변수 이름을 지정하지 않았습니다. greek_alphabet:)
John La Rooy

4

배열의 슬라이싱은 [first:last+1].

내가 많이 사용하는 한 가지 트릭은 줄임표로 추가 정보를 표시하는 것입니다. 따라서 필드가 100 자이면 다음을 사용합니다.

if len(s) <= 100:
    print s
else:
    print "%s..."%(s[:97])

그리고 네, ()이 경우 %포맷팅 연산자 가 불필요 하다는 것을 압니다 . 그것은 제 스타일 일뿐입니다.


나는 이것이 생각의 음식을 의미한다고 생각하지만 OP의 경우 나는 그것을 제안하지 않을 것입니다. 결과는 추가 트리밍 또는 이와 유사한 내용을 확인해야하는 문자열입니다. 이 경우 나는 그 숫자가 변하기를 원하고 그 결과가 항상 정확하기를 원하거나, 숫자를 수정하고 의미있는 것을 생성하거나 오류를 처리하거나 실패시 우아하게 반환하기를 원할 것입니다. 사람이 읽을 수있는 정보를 제공하는 것 외에 문자열에 임의로 텍스트를 추가하고 싶은 경우를 생각할 수 없습니다.

3

이전 예제의 대부분은 문자열이 충분히 길지 않은 경우 예외를 발생시킵니다.

또 다른 접근 방식은 'yourstring'.ljust(100)[:100].strip().

그러면 처음 100 개의 문자가 제공됩니다. 문자열 마지막 문자가 공백 인 경우 더 짧은 문자열을 얻을 수 있습니다.


감사. stackoverflow에 대한 최고의 답변이 쉽게 인식되고 찬성되지 않는 이유가 이상합니다.
Basil Musa

3

사용하는 문자열 형식화 %는이를 처리하는 좋은 방법입니다. 여기 몇 가지 예가 있어요.

형식화 코드 '%s''12345'문자열 로 변환 되지만 이미 문자열입니다.

>>> '%s' % '12345'

'12345'

'%.3s' 처음 세 문자 만 사용하도록 지정합니다.

>>> '%.3s' % '12345'

'123'

'%.7s'처음 7 개 문자를 사용하라고하는데 5 개만 있습니다. 문제 없어요.

>>> '%.7s' % '12345'

'12345'

'%7s' 최대 7 개의 문자를 사용하여 누락 된 문자를 왼쪽에 공백으로 채 웁니다.

>>> '%7s' % '12345'

'  12345'

'%-7s' 오른쪽에 누락 된 문자를 채우는 것을 제외하고는 동일합니다.

>>> '%-7s' % '12345'

'12345  '

'%5.3' 처음 세 글자를 사용하되 왼쪽에 공백을 넣어 총 다섯 글자를 입력합니다.

>>> '%5.3s' % '12345'

'  123'

오른쪽 채우기를 제외하고는 동일합니다.

>>> '%-5.3s' % '12345'

'123  '

여러 인수도 처리 할 수 ​​있습니다!

>>> 'do u no %-4.3sda%3.2s wae' % ('12345', 6789)

'do u no 123 da 67 wae'

더 많은 유연성이 필요한 경우에도 str.format()사용할 수 있습니다. 다음은 둘 다에 대한 문서 입니다.


0
[start:stop:step]

그래서 당신은 단지 100 첫 번째 문자 사용을 원하는 경우 your_string[0:100]또는 your_string[:100] 당신은, 심지어 위치에 문자 만을 사용하려면 your_string[::2] 시작 정지를 들어, 0은 "기본값"- 문자열 렌, 및 단계 - 1. 그래서 그 중 하나를 제공하지 않고 ':'을 넣으면 기본값을 사용합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.