2

文字列をリストに変換し、ループを使用して句読点を削除してからリストを文字列に戻し、句読点なしで文を出力する Python プログラムを作成します。

punctuation=['(', ')', '?', ':', ';', ',', '.', '!', '/', '"', "'"]

str=input("Type in a line of text: ")

alist=[]
alist.extend(str)
print(alist)

#Use loop to remove any punctuation (that appears on the punctuation list) from the list

print(''.join(alist))

これは私がこれまでに持っているものです。次のようなものを使用してみました:alist.remove(punctuation)のようなエラーが表示されますlist.remove(x): x not in list。最初は質問を正しく読んでおらず、ループを使用してこれを行う必要があることに気付いたので、それをコメントとして追加しましたが、今は行き詰まっています。ただし、リストから文字列に変換することに成功しました。

4

4 に答える 4

5
import string
punct = set(string.punctuation)

''.join(x for x in 'a man, a plan, a canal' if x not in punct)
Out[7]: 'a man a plan a canal'

説明:string.punctuationは次のように事前定義されています。

'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'

残りは単純な理解です。Asetは、フィルタリング ステップを高速化するために使用されます。

于 2013-10-16T21:35:50.290 に答える
2

私はそれを行う簡単な方法を見つけました:

punctuation = ['(', ')', '?', ':', ';', ',', '.', '!', '/', '"', "'"]
str = raw_input("Type in a line of text: ")

for i in punctuation:
  str = str.replace(i,"")

print str

この方法を使用すると、エラーが発生しなくなります。

于 2013-10-16T21:30:42.883 に答える
1
punctuation=['(', ')', '?', ':', ';', ',', '.', '!', '/', '"', "'"]
result = ""
for character in str:
   if(character not in punctuation):
       result += character
print result
于 2013-10-16T21:28:43.440 に答える