1

Python では、文字列から重複した文字を削除したいのですが、数字やスペースは削除したくありません。私が思いついた:

result = []
seen = set()
for char in string:
    if char not in seen:
        seen.add(char)
        result.append(char)
return "".join(result)

しかし、それは次のようになります:

>>> delete_duplicate_letters("13 men were wounded in an explosion yesterday around 3:00pm.")
13 menwroudiaxplsyt:0.

私が欲しいとき:

>>> delete_duplicate_letters("13 men were wounded in an explosion yesterday around 3:00pm.")
13 men wr oud i a xpls yt 3:00.

関数やステートメントなどのletter代わりに使用しようとしましたが、何も機能しませんでした。charisalpha()if int

4

4 に答える 4

1

これを試して:

result = ""
for char in string:
    if not (char.isalpha() and char in result):
        result += char
于 2013-05-15T08:36:05.407 に答える
1

とを使用str.isspacestr.isdigitます。

strs = "13 men were wounded in an explosion yesterday around 3:00pm."
result = []
seen = set()
for char in strs:
    if char not in seen:
        if not (char.isspace() or char.isdigit()):
           seen.add(char)
        result.append(char)
print "".join(result)

出力:

13 men wr oud i a xpls yt  3:00.
于 2013-05-15T08:36:17.887 に答える
0

もうすぐそこにいるようです。ループにいくつかのチェックを追加するだけです:

result = []
seen = set()
for char in string:
    if char.isdigit() or char.isspace():
        result.append(char)
    elif char not in seen:
        seen.add(char)
        result.append(char)
return "".join(result)
于 2013-05-15T08:37:28.377 に答える