2017-10-27 9 views
0
PUNCTUATION = '''!"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~''' 

WHITE_SPACE = ' \t\n\r\v\f' 

EXTRANEOUS = PUNCTUATION + WHITE_SPACE 

str = ["HeLlo!!!,","H%I"] 
l = [] 
for s in str: 
    for x in EXTRANEOUS: 
     sd = s.replace(x,"") 
    l.append(sd) 
print(l) 

こんにちは!私のPythonコードは何らかの理由で動作していません。私は句読点や空白を取り除こうとしています。Python:置換機能が動作しない

答えて

1

だけre.subを使用します。

import re 
str = ["HeLlo!!!,","H%I"] 
final_str = [re.sub('\W+', '', i) for i in str] 

出力:

['HeLlo', 'HI'] 
2

あなたのコードは、以前の置換の結果を一掃。

for s in str: 
    for x in EXTRANEOUS: 
     s = s.replace(x,"") 
    l.append(s) 
0

あなたは常に文字列の変更されていないバージョンsを使用します。ただ、ssdを置き換える:他の人が言っている

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

WHITE_SPACE = ' \t\n\r\v\f' 

EXTRANEOUS = PUNCTUATION + WHITE_SPACE 

str = ["HeLlo!!!,","H%I"] 
l = [] 
for s in str: 
    for x in EXTRANEOUS: 
     s = s.replace(x,"") 
    l.append(s) 
print(l) 
0

として、あなたはsreplace()関数の出力を格納していません。 sd = s.replace(x,"")s = s.replace(x,"")l.append(s)に置き換えてください。句読点を削除するもう1つの方法は、このようにすることです。

Python 2.x

import string 

stri = ["HeLlo!!!,","H%I"] 
l = [] 
for s in stri: 
    l.append(s.translate(None, string.punctuation)) 
print(l) 

Python 3.x

import string 

stri = ["HeLlo!!!,","H%I"] 
l = [] 
for s in stri: 
    l.append(s.translate(str.maketrans("","", string.punctuation))) 
print(l) 

出力:

['HeLlo', 'HI'] 
0

あなたはこのようにそれを行うことができます。

PUNCTUATION = '''!"#$%&'()*+,-./:;<=>[email protected][\]^_`{|}~''' 
WHITE_SPACE = ' \t\n\r\v\f'  
EXTRANEOUS = PUNCTUATION + WHITE_SPACE  
str_list = ["HeLlo!!!","H%I"] # this a list 
result = [] 

for s in str_list: 
    l = "" 
    for x in s: 
     if x not in EXTRANEOUS: 
      l += x 
    result.append(l) 

print(result) 

出力:

['HeLlo', 'HI'] 
関連する問題