【问题标题】:Remove an specific unicode character from an array Python从数组 Python 中删除特定的 unicode 字符
【发布时间】:2021-09-06 19:46:09
【问题描述】:

我有一些这样的数组:

['دوره', 'ندارد', '\uf0d6', 'دارد']

我想从中删除特定的 Unicode 字符,例如 \uf0d6。我试过这个:

  for item in tagArray[0]:
    if item.startswith('\u'):
      tagArray[0] = tagArray[0].remove(item)

但是当我运行它时,我收到了这个错误:

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-1: truncated \uXXXX escape

如何解决这个问题?

编辑:ASCII 字符的编码/解码或

【问题讨论】:

  • 这能回答你的问题吗? Replace non-ASCII characters with a single space
  • 这是因为 python 期望在 \u 之后有 4 位数字。相反,请尝试通过 ASCII 范围 (> 128) 之外的范围查找 unicode 字符。
  • @sahasrara62 这个方法不起作用,因为波斯字符不是 ASCII,所以它会全部删除
  • @Frontear 这个方法不起作用,因为波斯字符不是 ASCII,所以它会全部删除
  • '\uXXXX' 不是由许多字符组成的字符串:它没有 ` nor u. It is just an escape sequence meaning: *this really mean the character/code point at XXXX (in Unicode Database)*. When Python execute the code, it just see one character. Note: it is much like other escape sequences, like \n`(通常用于无法打印和/或难以键入,或者仅仅因为特定的需要代码点)。

标签: python unicode farsi


【解决方案1】:

你可以试试下面的代码sn-p。希望它对你有用。

代码:

import re

def remove_unicode(str):
    return re.sub(r'[^\w]+', '', str, flags=re.U)

str_list = ['دوره', 'ندارد', '\uf0d6', 'دارد']
res_list = []

for str in str_list:
    res_str = remove_unicode(str)
    if res_str:
        res_list.append(res_str)

print(res_list)

输出:

['دوره', 'ندارد', 'دارد']

【讨论】:

  • 如果 unicode 字符是硬编码的,而不是\u,这会起作用吗?
  • 不能保证,但希望它会起作用。如果它不起作用,您可以尝试让我知道
  • 这个答案缺乏解释,所以不是那么有用。我们喜欢理解问题(所以我们解决的不仅仅是一个问题,而是整个问题类别)。
猜你喜欢
  • 2017-03-30
  • 2012-08-14
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2011-04-25
  • 1970-01-01
  • 2019-11-26
  • 2022-01-12
相关资源
最近更新 更多