繁体   English   中英

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

[英]Remove special character from set of values in Python

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

我应用下面提到的逻辑。

我得到了我想要的确切的 output,但是任何人都可以帮助我用一种更短更方便的方法吗?

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)

OUTPUT

{'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模块。
如果您之前没有接触过正则表达式,我建议您阅读真正的 python的本教程

要捕获字符串中的任何非字母数字字符并将其替换为空字符串 ( "" ),可以简单地使用"\W"表达式,它与[^a-zA-Z0-9_][^\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)

Output

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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