我有一个巨大的字符串,其中包含“ \ u201d”,“ \ advance \”之类的情感
我所需要做的就是删除斜线,以便:
- \u201d = \u201d
- \united\ = united
(因为它破坏了将其上传到BigQuery数据库的过程)
我知道应该以这种方式:
string.replace('\','') But not sure how to keep \u201d emotions.
附加: Unicode情感示例
答案 0 :(得分:1)
如果您的字符串以\u
开头并且至少包含一位数字,则只需在替换后在字符串前面添加反斜杠即可。
import re
def clean(s):
re1='(\\\\)' # Any Single Character "\"
re2='(u)' # Any Single Character "u"
re3='.*?' # Non-greedy match on filler
re4='(\\d)' # Any Single Digit
rg = re.compile(re1+re2+re3+re4,re.IGNORECASE|re.DOTALL)
m = rg.search(s)
if m:
r = '\\'+s.replace('\\','')
else:
r = s.replace('\\','')
return r
a = '\\u123'
b = '\\united\\'
c = '\\ud83d'
>>> print(a, b, c)
\u123 \united\ \ud83d
>>> print(clean(a), clean(b), clean(c))
\u123 united \ud83d
当然,如果同一行中有多个条目,则必须拆分字符串:
string = '\\u123 \\united\\ \\ud83d'
clean_string = ' '.join([clean(word) for word in string.split()])
答案 1 :(得分:1)
您可以对所有'\'进行分割,然后使用正则表达式通过添加前导'\'来代替情绪
s = '\\advance\\\\united\\ud83d\\udc9e\\u201c\\u2744\\ufe0f\\u2744\\ufe0f\\u2744\\ufe0f'
import re
print(re.sub('(u[a-f0-9]{4})',lambda m: '\\'+m.group(0),''.join(s.split('\\'))))
由于您的情感是'u'和4个十六进制数字,'u[a-f0-9]{4}'
将使它们全部匹配,并且您只需添加前导反斜杠
首先,使用''.join(s.split('\\'))
或s.replace('\\')
删除字符串中的每个'\'
然后我们将每个“情感”与正则表达式u[a-f0-9]{4}
匹配(您是u,后面是4个十六进制字母)
然后使用regex子,将所有匹配项替换为前导\\
答案 2 :(得分:0)
您可以使用以下简单方法替换字符反斜杠的最后一次出现: 检查代码并使用此方法。
def replace_character(s, old, new):
return (s[::-1].replace(old[::-1],new[::-1], 1))[::-1]
replace_character('\advance\', '\','')
replace_character('\u201d', '\','')
输出:
\ advance \ u201d
答案 3 :(得分:0)
您可以像这样简单
text = text.replace(text[-1],'')
在这里,您只需将最后一个字符替换为空