我有2个相关的问题/问题.
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
Run Code Online (Sandbox Code Playgroud)
输出= 'heyyouare you ok'
删除分隔符时,避免将字符串组合在一起的最佳方法是什么?例如,输出是hey you are you ok
?
可能存在许多不同的序列...
,例如..
或者..........
等等.如何实现某种形式的规则,如果不止一个规则.
出现在彼此之后,将其删除?我想尝试避免在我的分隔符列表中对所有序列进行硬编码.谢谢
你可以尝试这样的事情:
给定分隔符d
,将它们加入正则表达式
>>> d = ",.!?/&-:;@'..."
>>> "["+"\\".join(d)+"]"
"[,\\.\\!\\?\\/\\&\\-\\:\\;\\@\\'\\.\\.\\.]"
Run Code Online (Sandbox Code Playgroud)使用此正则表达式拆分字符串 re.split
>>> s = 'hey-you...are you ok?'
>>> re.split("["+"\\".join(d)+"]", s)
['hey', 'you', '', '', 'are you ok', '']
Run Code Online (Sandbox Code Playgroud)将所有非空片段重新加入
>>> ' '.join(w for w in re.split("["+"\\".join(d)+"]", s) if w)
'hey you are you ok'
Run Code Online (Sandbox Code Playgroud)此外,如果您只想删除所有非单词字符,则只需使用字符组\W
而不是手动枚举所有分隔符:
>>> ' '.join(w for w in re.split(r"\W", s) if w)
'hey you are you ok'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6408 次 |
最近记录: |