2017-08-04 8 views
1

私はPython 2.7でテキストアドベンチャーを書いています。私はすでにTkinterでGUIを作ろうとしましたが、それはうまくいきませんでした。なぜなら、ユーザのテキスト入力はTkで解読できず、ドイツ語のUmlautsのために必要でした。だから、私はpythonシェルまたはjupyterノートブックですぐに良い出力を得ようとしています。これは、テキストとほんの少しエクサ問題を示すためにPython:文字列中の単語が出力に取り除かれる

mpleある

:問題は、私はprint文を実行するとき、私はのような出力を得ること、です。


もちろん、私は「example」のように言葉を取り除きたいとは思っていません。それは次のようになります。

これは、問題を表示するテキストと

ほんの少しの例です。唯一の空白ではないに分割されるべきであることが、条件と、80個の文字の後に文字列を分割するのが良いだろうと、ディスプレイの幅で動作し、考えることは、私は疲れて


単語。私はこのような何かをやってみたかった:

def output(string): 
    for pos, char in enumerate(string): 
     if pos <= 80 and pos >=70 and char == " ": 
      templist = string.split(char) 
      ... 

文字列は不変ですので、私は、私は、リストでそれをひそかする必要があると思いますが、その後、私は、文字列の分割位置を配置する方法がわからないと、一緒にリストする。たぶん私はあまりに複雑すぎると思うかもしれない。

文字列が80文字より長い場合は、最も近い空白文字列を80番目の文字に分割します。

+0

は、私は、このためのPythonライブラリがあると思い、実際の入力文字列(80文字より長い)と期待される結果 – RomanPerekhrest

+0

を投稿してください。 – quamrana

答えて

2

textwrap moduleを使用してください。

あなたは40文字の線幅たい場合たとえば、:

import textwrap 
a = '''This is a text and just a little example to show the problem.''' 
print("\n".join(textwrap.wrap(a,40))) 
##This is a text and just a little example 
##to show the problem. 
+0

これはまさに、私が探していたものです。(沢山の長時間のコーディング:D)たぶん違和感のあるキーワードで検索しました。本当にありがとう、私はそれを感謝します。 – FabianPeters

0

を、私はあなたがtextwrapモジュールを探していると思います。

text_wrap.fill(your_text, width=your_width)

+0

それは私が探していたモジュールです。あなたの答えはありがとう、私はそれを感謝します。 – FabianPeters

1

私は、文字列の最初の80個の文字を見て、スペース文字の最後の出現を見つけ、その後、そこにあなたの文字列を分割します。あなたはこのためrfind()を使用することができます。

string = "This is a text and just a little example to show the problem" 
lines = [] 
while string: 
    index = string[:80].rfind(' ') 
    if index == -1: 
     index = 80 
    lines.append(string[:index]) 
    string = string[index:].lstrip() 
+0

これは興味深い方法です。私もこの方法を試みます。ありがとうございました! – FabianPeters

+0

よく 'textwrap'ライブラリについて知らなくてもこれを書いています。それはおそらくより良い方法です – TallChuck

関連する問題