繁体   English   中英

删除字符串python中的ascii字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM