#53758: python 為什麼WA(line:112)???


liu_owo_tw (liu ouo tw)

學校 : 新北市立板橋高級中學
編號 : 290064
來源 : [218.161.127.236]
最後登入時間 :
2025-10-10 08:27:35

import re, sys
a = ""
for line in sys.stdin:
    a += line.lower() + " "
cleaned = re.sub(r'[^\w\s]', '', a)
s = sorted(set(cleaned.split()))
sys.stdout.write("\n".join(s))
#53760: Re: python 為什麼WA(line:112)???


sam851015@gmail.com (多挖鼻孔有益身心健康)

學校 : 臺中市立惠文高級中學
編號 : 277705
來源 : [123.192.228.253]
最後登入時間 :
2025-09-21 22:24:46

我個人猜測應該是條件排除不夠乾淨,但我不太確定需要排除多少東西

但可以確定的是你目前的寫法排除的條件不夠多

可以用這個網站(regex101)玩玩看

 

猜測你要找的是非空白字元且非英文字母的字符

[^\w] 不會把數字和底線除外

但我嘗試 re.sub 這樣的條件時: [^\w\s]+|[_]+|\d+ ,依然得到一樣的結果

不太確定是有什麼條件沒有注意到

 

我的做法是用 re.findall (或 re.finditer) 找符合條件的字串,即匹配連續不中斷的英文字母,寫成 [A-Za-z]+ 就可以了,規則簡單不少