从 Python 中的值集中删除特殊字符

Remove special character from set of values in Python

我想从 Python 中的一组字符串值中删除一个特殊字符。

我应用下面提到的逻辑。

我得到了我想要的准确输出,但是谁能用更简短、更方便的方法帮助我?

job = {'job', 'entrepreneur', 'student', 'services', 'housemaid', 'management', 'self- 
employed','admin.', 'blue-collar', 'technician'}
#print(job)
job_copy = set()
val = ''
for j in job:
  if j.isalnum():
    job_copy.add(j)
  else:
    for char in j:
        if char.isalnum():
            val = val+char
    job_copy.add(val)
    val = ''
print(job_copy)

输出

{'technician', 'housemaid', 'selfemployed', 'entrepreneur', 'job', 'services', 'admin', 'management', 'student', 'bluecollar'}

这是一个更简短的解决方案:

{re.sub('[^A-Za-z]+', '', s) for s in job}

对于 job 中的每个字符串 s,我们用空字符替换任何特殊字符(即不是大写或小写字母)。

使用正则表达式和理解:

import re
output = set([re.sub('[^A-ZÜÖÄa-z0-9]+', '', s) for s in job])

为了使代码简短易懂,您可以简单地使用正则表达式,即 Python.
中的 re 模块 如果您之前没有接触过正则表达式,我建议您阅读 real python.
tutorial 要捕获字符串中的任何非字母数字字符并将其替换为空字符串 (""),可以简单地使用与 [^a-zA-z0-9_] 或 [=16= 相同的 "\W" 表达式] 在 re.sub() 方法中,可用于将字符串中的正则表达式模式替换为其他内容。

代码可以改写成这样;

import re

job = {'job', 'entrepreneur', 'student', 'services', 'housemaid', 'management', 'self-employed','admin.', 'blue-collar', 'technician'}

job_copy = {re.sub(r'\W', '', j) for j in job}
print(job_copy)

输出

{'technician', 'student', 'management', 'bluecollar', 'job', 'services', 'selfemployed', 'housemaid', 'entrepreneur', 'admin'}