0

このコードはほぼ完成しましたが、大文字と小文字の「t」をスペースに置き換えることができません。私のコードのフォーマットは同じはずですが、「t」をスペースに置き換えるのに助けが必要です。たとえば、「The book on the table thttg」は「he book on he able h g.」のようになります。したがって、ほとんどの場合、「t」は非表示にする必要があります。

def remoeT(aStr):
    userInput = ""
    while True:
        string = raw_input("Enter a word/sentence you want to process:")
        if string == "Quit":
            return userInput

        userInput = userInput + string
        if aStr != False:
            while "t" in userInput:
                index = userInput.find("t")
                userInput = userInput[:index] + userInput[index+1:]
        while "T" in userInput:
            index = userInput.find("T")
            userInput = userInput[:index] + userInput[index+1:]
4

3 に答える 3

5

string 内のすべてのtandをスペースに置き換えるには、次を使用します。Tinput

input = input.replace('t', ' ').replace('T', ' ')

または正規表現で:

import re
input = re.sub('[tT]', ' ', input)
于 2012-09-27T22:15:11.240 に答える
4

単純に置換機能を使用しないのはなぜですか?

s = 'The book on the table thttg it Tops! Truely'
s.replace('t', ' ').replace('T', ' ')

収量:

' he book on  he  able  h  g i   ops!  ruely'

正規表現を使用するほど良くはないかもしれませんが、機能的です。

ただし、これは正規表現アプローチよりも大幅に高速に見えます (@JoranBeasley がベンチマークを動機付けたおかげです)。

timeit -n 100000 re.sub('[tT]', ' ', s)
100000 loops, best of 3: 3.76 us per loop

timeit -n 100000 s.replace('t', ' ').replace('T', ' ')
100000 loops, best of 3: 546 ns per loop
于 2012-09-27T22:14:27.793 に答える
3

正規表現を使用します。

>>> import re
>>> st = "this is a sample input with a capital T too."
>>> re.sub('[tT]', ' ', st)
' his is a sample inpu  wi h a capi al    oo.'

また、変数に「string」という名前を付けないでください。非表示になる「文字列」クラスがあります。

于 2012-09-27T22:14:01.757 に答える