【问题标题】:How to remove unwanted characters from list of string?如何从字符串列表中删除不需要的字符?
【发布时间】:2020-09-24 15:11:22
【问题描述】:

我想使用 re 库删除特殊字符 并且只使用一种方法:cleanName(), 我正在编写代码厨师

input_list=["Donald_Trump", "Joe1@Bidden", "Kamala Harris1"]

output_list=["Donald Trump", "Joe Bidden", "Kamala Harris"]

我正在使用此代码,但没有得到帮助:

import re
input_list=["Donald_Trump", "Joe1@Bidden", "Kamala Harris1"]
print [re.sub('[^a-zA-Z0-9]+', '', _) for _ in input_list]

can it be done through iteration(using for loop)?

【问题讨论】:

标签: python-3.x string list


【解决方案1】:

您的打印在 python 3.0+ 中应该有一个括号,而不是'',改为' '""。 单引号('')和双引号("")之间的区别是双引号的长度为1,单引号的长度为0。尝试将它们都分配给变量并使用len()查找出去。

print([re.sub('[^a-zA-Z0-9]+', ' ', _) for _ in input_list])

【讨论】:

  • 意外输出: at 0x2b34fe0a80f8>
  • @annypanny 编辑后的版本现在应该可以使用了。我错过了前面代码中的[
【解决方案2】:

您这里好像有 2 个案例。

  1. 用空格替换一些字符
  2. 用空替换一些字符
import re

input_list=["Donald_Trump", "Joe1@Bidden", "Kamala Harris1"]

output_list=[re.sub(r"[_@]", " ", word) for word in input_list]
output_list=[re.sub(r"[^a-zA-Z\s]", "", word) for word in output_list]

print(output_list) # ['Donald Trump', 'Joe Bidden', 'Kamala Harris']

根据要求,在 for 循环中:

import re

input_list = ["Donald_Trump", "Joe1@Bidden", "Kamala Harris1"]

output_list = []

for word in input_list:
  filtered_word = re.sub(r"[_@]", " ", word)
  filtered_word = re.sub(r"[^a-zA-Z\s]", "", filtered_word)

  output_list.append(filtered_word)

print(output_list)

【讨论】:

  • 它正在工作,但我们可以在 for 循环的帮助下做到这一点。
  • @annypanny 我添加了一个带有 for 循环的版本。
  • 不客气。如果它是您的正确答案,请将答案标记为已接受。
猜你喜欢
  • 1970-01-01
  • 2011-12-24
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-08
  • 2014-11-27
相关资源
最近更新 更多