【发布时间】:2016-09-15 08:10:22
【问题描述】:
我有 "- memphis , tn! "、"~~~memphis,tn"、":) memphis , tn (:"、". - memphis,tn - ."、"memphis tn?" 等字符串。我想清理这些字符串中的每一个,使每个字符串变为"memphis,tn"。目前,我使用下面的代码,但是有没有更有效的方法呢?也许使用正则表达式?
请注意,我目前遇到的问题是特殊字符的顺序会影响最终结果。例如,". - memphis,tn - ." 给出了正确的结果,而 "- . memphis,tn . -" 没有。这不是故意的。如果它可以作为副作用修复,那就太好了!
字符串是纯 ASCII,我可能会想删除比下面更多的特殊字符。
编辑: 抱歉,我应该注意并非所有字符串都具有“x,y”格式。还应清理诸如“-- New York City--”或“* Texas *”之类的字符串。
# remove emoticons
smileys = [":)",":\\",":(",";)",
"(:","\\:","):","(;"]
for s in smileys:
loc = loc.replace(s, '')
# cleaning whitespace uses
loc = ' '.join(loc.split())
loc = loc.strip()
loc = loc.replace(' ,', ',')
loc = loc.replace(', ', ',')
loc = loc.replace(' .', '.')
loc = loc.replace('. ', '.')
# clean special symbols off the sides
symbols = '.,!-#~*^?@" '
loc = loc.strip(symbols)
【问题讨论】:
-
"-- New York City --"会输出什么? -
你是如何替换
:) memphis , tn (:中的空格的? -
啊,是的,我在删除特殊字符后再次使用 .strip() 。对不起。
-
str.strip接受一串字符并以任意顺序将它们剥离,例如:"asdfdsas hello fdsafsdf".strip("asdf") -> ' hello '
标签: python regex string replace data-cleaning