Python从字符串中删除分隔符
我有两个相关问题Python从字符串中删除分隔符,python,Python,我有两个相关问题 def remove_delimiters (delimiters, s): for d in delimiters: ind = s.find(d) while ind != -1: s = s[:ind] + s[ind+1:] ind = s.find(d) return ' '.join(s.split()) delimiters = [",", ".", "!", "
def remove_delimiters (delimiters, s):
for d in delimiters:
ind = s.find(d)
while ind != -1:
s = s[:ind] + s[ind+1:]
ind = s.find(d)
return ' '.join(s.split())
delimiters = [",", ".", "!", "?", "/", "&", "-", ":", ";", "@", "'", "..."]d_dataset_list = ['hey-you...are you ok?']
d_list = []
for d in d_dataset_list:
d_list.append(remove_delimiters(delimiters, d[1]))
print d_list
输出=“你好吗”
嘿,你还好吗
..
序列,例如。
或..
等。如何执行某种形式的规则,如果多个
相继出现,如何将其删除?我希望尽量避免硬编码分隔符列表中的所有序列。谢谢您可以尝试以下方法:
d
,将它们连接到正则表达式
>>> d = ",.!?/&-:;@'..."
>>> "["+"\\".join(d)+"]"
"[,\\.\\!\\?\\/\\&\\-\\:\\;\\@\\'\\.\\.\\.]"
re.Split
>>> s = 'hey-you...are you ok?'
>>> re.split("["+"\\".join(d)+"]", s)
['hey', 'you', '', '', 'are you ok', '']
>>> ' '.join(w for w in re.split("["+"\\".join(d)+"]", s) if w)
'hey you are you ok'
\W
,而不是手动枚举所有分隔符:
>>> ' '.join(w for w in re.split(r"\W", s) if w)
'hey you are you ok'
因此,首先,通过使用replace函数()可以大大简化删除分隔符的函数 这将有助于解决您的第一个问题。不只是删除它们,而是替换为一个空格,然后使用您已经使用过的模式除去空格(split()将连续分隔符视为一个分隔符) 更好的功能是:
def remove_delimiters (delimiters, s):
new_s = s
for i in delimiters: #replace each delimiter in turn with a space
new_s = new_s.replace(i, ' ')
return ' '.join(new_s.split())
为了回答你的第二个问题,我想说是时候使用正则表达式了
>>> import re
... ss = 'hey ... you are ....... what?'
... print re.sub('[.+]',' ',ss)
hey you are what?
>>>
您的分隔符列表中只有一个点,但是您问我们如何删除两个或多个点。到底是哪一个,单点是否应该保留?