【问题标题】:python removing specific non-ASCII characters from a string [duplicate]python从字符串中删除特定的非ASCII字符[重复]
【发布时间】:2017-06-18 12:06:52
【问题描述】:

我已经在网上搜索了解决方案,但这个问题有所不同,因为我不想删除所有非 ASCII 字符,只删除其中的特定部分。

我有一条看起来像这样的线:

"[x+]4 gur Id lú gal sik-kát ⌈ x x ⌉ [……………]"

我想只删除这些字符:

'…' , '⌉' , '⌈'

文字来自here

我尝试使用 replace 解决它,但每当我编写这些非 ASCII 字符之一时,我都会收到以下错误行:

SyntaxError: Non-ASCII character '\xe2' in file C:/-------.py on line --,但未声明编码;

提前致谢。

【问题讨论】:

  • 记住ú 也是非ascii。

标签: python string


【解决方案1】:

使用str.translate

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import string

s = "[x+]4 gur Id lú gal sik-kát ⌈ x x ⌉ [……………]"
r = s.translate(None, '…⌉⌈')

print(r)
# [x+]4 gur Id lú gal sik-kát  x x  []

【讨论】:

  • 它不起作用 - SyntaxError: Non-ASCII character '\xe2' in file C:/------------.py on line 57, but no encoding declaration;跨度>
  • @Yonlif,在文件开头添加# -*- coding: utf-8 -*-。检查了更新的答案。
【解决方案2】:
'[x+]4 gur Id lú gal sik-kát ⌈ x x ⌉ [……………]'.encode().decode('ascii', errors='ignore')

出来:

'[x+]4 gur Id l gal sik-kt  x x  []'

使用 encode 将字符串转换为字节,并通过ascii 对其进行解码并忽略错误。

我认为你应该使用re.sub

import re

text = "[x+]4 gur Id lú gal sik-kát ⌈ x x ⌉ [……………]"

re.sub('[…⌉⌈]', '', text)  # this will replace all the element in [] with ''

出来:

'[x+]4 gur Id lú gal sik-kát  x x  []'

【讨论】:

  • 但我想保留 ú 和 á
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 2018-09-16
  • 1970-01-01
  • 2023-03-18
  • 2012-01-21
  • 2010-12-04
相关资源
最近更新 更多