文字列の最初の100文字を出力する


108

Pythonで部分文字列関数を見つけることができます。

文字列の最初の100文字を出力したいとします。どうすればよいですか?

私もそれを安全にしたいです。つまり、文字列が50文字であれば、失敗しないはずです。


2
この質問のフォローアップは次のとおりです
。Python

1
「キャラクター」とはどういう意味ですか?コードポイント、書記素クラスター、またはコード単位?スライスはコード単位をカウントするため、望ましい結果が得られない可能性があります。
フィリップ

回答:


168
print my_string[0:100]

5
たとえば、100未満の文字列でも機能しますprint 'foo'[:100]len('foo')3なので、foo[100]機能しない場合でも機能します)
Rodrigo Laguna

67

Pythonチュートリアルから:

縮退したスライスインデックスは適切に処理されます。大きすぎるインデックスは文字列sizeに置き換えられ、上限が下限よりも小さい場合は空の文字列が返されます。

そのため、使用しても安全x[:100]です。



7

(コメントの)Philippの懸念に答えるために、Unicode文字列でもスライスは機能します

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

上記のコードをスクリプトとして実行する場合は、この行を先頭に配置します

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

エディターがutf-8で保存しない場合は、正しいエンコーディングに置き換えてください


2
あなたの答えを中傷が、ギリシャ語であり1つののみ24文字、ないςσ同じ文字です:-)
paxdiablo

4
@paxdiablo、ドー!私はそれらをウィキペディアのページからコピーしました。ラッキー私はそのとき変数に名前を付けませんでしたgreek_alphabet:)
John La Rooy 2010

4

配列のスライスはで行われ[first:last+1]ます。

私がよく使用する傾向がある1つのトリックは、楕円で追加情報を示すことです。したがって、フィールドが100文字の場合、次のように使用します。

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

そして、はい、()この場合、%書式設定演算子については不必要であることがわかります。それは私のスタイルです。


これは思考の糧として意図されていたと思いますが、OPの場合、私はおそらくそうすることを勧めません。結果は、さらにトリミングするためにコンテンツをチェックする必要がある文字列などになります。この場合、その数値を可変にして結果を常に正しくするか、数値を修正して処理が意味のあるものを生成するか、エラーが発生するか、失敗した場合は正常に戻るかを想像します。文字列に任意にテキストを追加したい、人間が読める情報を提供する以外に、多くの場合は考えられません。

3

前の例のほとんどは、文字列が十分に長くない場合に例外を発生させます。

別のアプローチはを使用すること 'yourstring'.ljust(100)[:100].strip()です。

これにより、最初の100文字が得られます。文字列の最後の文字がスペースである場合、短い文字列を取得する可能性があります。


ありがとう。Stackoverflowのベストアンサーが簡単に認識されず、賛成できないのはなぜですか。
バジルムーサ

2

を使用した文字列フォーマット%は、これを処理する優れた方法です。下記は用例です。

書式設定コードは文字列に'%s'変換さ'12345'れますが、既に文字列です。

>>> '%s' % '12345'

'12345'

'%.3s' 最初の3文字のみを使用することを指定します。

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

'123'

'%.7s'最初の7文字を使用するように言っていますが、5文字しかありません。問題ない。

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

'12345'

'%7s' 最大7文字を使用し、欠落している文字を左側のスペースで埋めます。

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

'  12345'

'%-7s' 右側の欠けている文字を埋める以外は同じです。

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

'12345  '

'%5.3' は、最初の3文字を使用すると言っていますが、左側にスペースを入れて合計5文字にします。

>>> '%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、停止-文字列のlen、およびステップ-1を使用します。そのいずれかを指定せずに ':'を指定すると、デフォルト値が使用されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.