[英]Remove ascii characters in a string python
我想删除字符串中的特殊字符。 然而,我没有成功。 你能帮助我吗?
它每个显示两个“”,但是当您打印时它变成了“”。 为什么会这样?。
数据更新:
data = [{
"data": "0\\x1e\\x82*.extractdomain.com\\x82\\x0ctest.extractdomain.com",
"name": "subjectAltName"
}]
re.sub("[^\x20-\x7E]", "", data["data"])
尝试这个。
clean_text = ' '.join(re.findall(r"[^\W]+", text))
编辑:或者这个。
custom_translation = {130: None, 22: None}
print(text.translate(custom_translation))
该帖子已被编辑为“文本已更改”,此解决方案不再有效。 旧文字是
text = '0:\x82 test test test\x82\x16testtesttest'
较新的解决方案:
custom_translation = {22: None, 49: None, 50: None, 54: None, 56: None, 92: None, 120: None}
print(text.translate(custom_translation))
txt = "0:\\x82 test test test\\x82\\x16testtesttest"
x = re.sub("\\\\(?:x16|x82)", "", txt)
作为这些字符的概括:
x = re.sub("\\\\(?:x\w\w)", "", txt)
输出:
0: test test testtesttesttest
很高兴知道:
简而言之,要匹配文字反斜杠,必须将 '\\\\' 写为 RE 字符串,因为正则表达式必须是 \\,并且每个反斜杠必须在常规 Python 字符串文字中表示为 \\。 在具有重复反斜杠的 RE 中,这会导致大量重复的反斜杠并使生成的字符串难以理解。
另一种方法是对正则表达式使用 Python 的原始字符串表示法; 反斜杠在以 'r' 为前缀的字符串文字中不会以任何特殊方式处理,因此 r"\\n" 是包含 '' 和 'n' 的两个字符的字符串,而 "\\n" 是包含换行符。 正则表达式通常使用这种原始字符串表示法用 Python 代码编写。
更多示例 - 反斜杠瘟疫
错误出在text
声明中,您对\\
双重转义,因此您正在编写一个普通的\\
而不是转义十六进制字符
text = '0:\x82 test test test\x82\x16testtesttest'
print(re.sub("[^\x20-\x7E]", "", text))
打印: 0: test test testtesttesttest
试试这个方法
import re
def delete_punc(s):
s1 = s.split()
match_pattern1 = re.findall(r'[a-zA-Z]', (str(s1[0])))
match_pattern2 = re.findall(r'[a-zA-Z]', (str(s1[1])))
listToStr1 = ''.join([str(elem) for elem in match_pattern1])
listToStr2 = ''.join([str(elem) for elem in match_pattern2])
return listToStr1 + ' ' + listToStr2
print(delete_punc("He3l?/l!o W{o'r[l9\d)"))
输出
Hello World
看起来好像字符串包含\\x
转义符,这些转义符本身已被转义,导致双反斜杠。 也许您收到了这样的数据,或者可能是一些较早的处理损坏了数据。 可以通过将字符串编码为字节然后使用 unicode-escape 编解码器解码来删除双反斜杠。 在此之后,您的正则表达式将起作用。
>>> s = "0\\x1e\\x82*.extractdomain.com\\x82\\x0ctest.extractdomain.com"
>>> fixed = s.encode('latin-1').decode('unicode-escape')
>>> fixed
'0\x1e\x82*.extractdomain.com\x82\x0ctest.extractdomain.com'
>>> re.sub("[^\x20-\x7E]", "", fixed)
'0*.extractdomain.comtest.extractdomain.com'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.