[英]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.