我一直在努力学习如何删除随机给定字符串上的特殊字符。随机给定的字符串可能类似于:
uh\n haha - yes 'nope' \t tuben\xa01337
我使用regex和string.translate
来尝试对我有效的方法:
import re
random_string = "uh\n haha - yes 'nope' \t tuben\xa01337"
print(re.sub(r"/[' \n \t\r]|(\xa0)/g", '', random_string))
print("-------")
print(random_string.translate(str.maketrans({c: "" for c in "\n \xa0\t\r"})))
其输出返回:
uh
haha - yes 'nope' tuben 1337
-------
uhhaha-yes'nope'tuben1337
问题在于,由于我希望输出为:
uh haha - yes nope tuben 1337
我想知道我怎么能做到这一点
这是sed或Vim等工具使用的语法,而不是Python的
re
模块与之相当的是
哪张照片
离这里不远,但你也删除了所有的空格
如果不删除空格
你得到
它有太多的空间
一种解决方案是使用逆正则表达式(它匹配您希望保留的字符运行)和
re.findall
来获得单词列表,然后您可以重新加入:哪张照片
此正则表达式将实现以下功能:
外部
re.sub
匹配多个空格,并用一个空格替换它内部的
re.sub
与您正在使用的几乎相同,我只是发现将它们都作为|
的选项更具可读性你可以用
见Python demo
注释:
re.sub(r"\s+", " ", random_string)
-将一个或多个空白字符的任何块压缩为单个常规空格字符.strip()
-删除前导/尾随空格.replace('"', '').replace("'", '')
-删除"
和'
字符李>相关问题 更多 >
编程相关推荐