2

文字列内の単語の最初の文字を削除する方法を見つけようとしています。

私のプログラムは文字列を読み取ります。

入力が次のとおりであるとします。

これはデモです

私の意図は、文字列の各単語の最初の文字を削除することです。つまり tid、 を残しhis s emoます。

私が試してみました

  1. a を使用for loopして文字列をトラバースする
  2. を使用して文字列内のスペースをチェックするisspace() function.
  3. スペースの後にある文字のインデックスを格納しますi = char + 1, 。ここで、char はスペースのインデックスです。
  4. 次に、を使用して空のスペースを削除しようとしますstr_replaced = str[i:].

ただし、最後の文字列を除く文字列全体が削除されました。

4

5 に答える 5

5

リスト内包表記はあなたの友達です。これは 1 行だけの最も基本的なバージョンです。

str = "this is demo";
print " ".join([x[1:] for x in str.split(" ")]);

output:   
his s emo
于 2012-06-19T18:01:29.763 に答える
4

入力文字列にスペースだけでなく、改行やタブも含めることができる場合は、regexを使用します。

In [1]: inp = '''Suppose we have a
   ...: multiline input...'''

In [2]: import re

In [3]: print re.sub(r'(?<=\b)\w', '', inp)
uppose e ave 
ultiline nput...
于 2012-06-19T06:39:48.423 に答える
0

試してください(python 3.2)

import os

s = '''this is a test of the... What? What is going on now?
You guys are cu-rayzy!
Morons!'''

new_lines = []
lines=s.strip().split("\n")
for line in lines:
    new_words = []
    for word in line.strip().split(" "):
        new_words.append(word[1:])
    new_lines.append(' '.join(new_words))
new_statement = "\n".join(new_lines)

print (s)

print (new_statement)

これにより、新しい行が処理されますが、空白は保持されず、各行の前後からスペースが取り除かれます。

于 2012-06-19T17:53:03.547 に答える
0

Python内包表記を使用するだけで

str = 'this is demo'
mstr = ' '.join([s[1:] for s in str.split(' ')])

mstr変数にはこれらの値が含まれます'his s emo'

于 2015-03-11T05:20:28.990 に答える