この質問は重複としてマークされる可能性があることは知っていますが、Webサイトで検索した後、本当にやりたいことに一致するものは見つかりませんでした。
私はこのような文字列を持っています:
string = "hey, that's you(this is a test)!"
単語に埋め込まれた句読点や先頭の句読点ではなく、文字列の最後の句読点のみを削除する関数に取り組んでいます。この関数は、単語の頻度も辞書に保存する必要があります。
これまでの私のコード:
def word_counts(string):
s = string.lower().split()
dic = {}
for key in string:
key = "".join([l for l in key if l.isalpha()])
if key in dic :
dic[key] += 1
else:
dic[key] = 1
return dic
私のコードは次の結果を叫んでいます:
{'a': 1, 'hey': 1, 'is': 1, 'test': 1, 'thats': 1, 'youthis': 1}
しかし、私が必要なのは:
{'a': 1, 'hey': 1, 'is': 1, 'test)': 1, 'that's': 1, 'you': 1, (this': 1}
単語で'test)'
は感嘆符は削除されていますが、括弧はそのままにしておく必要があることに注意してください。これを行う方法についての手がかりはありますか?
よろしくお願いします
編集:
「hey」の後のコンマは残す必要があります。一度に1つの句読点のみを削除する必要があるため、単語の末尾に2つが見つかった場合は、1つだけを削除する必要があります。
句読点の可能性をチェックし、見つかった場合は削除された文字列を返すのはどうですか?
import string
def strip_last_punctuation(s):
if s and s[-1] in string.punctuation:
return s[:-1]
else:
return s
test_str = "hey, that's you(this is a test)!"
print(strip_last_punctuation(test_str))
編集:不要なfor
ループを削除しました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加