如何使用正则表达式删除特定单词之间特定位置的空格?

2024-06-16 09:56:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字符串列表,我想删除单词之间的一个空格:

classes_list = ['CLASS 8B CHEM  | MON | 10AM to 10:40AM', '--Rescheduled-- CLASS 8B MATHS  | MON | 11AM to 11:40AM', 'CLASS 8B HIST  | MON | 5PM to 5:40PM']
  • 我想在化学、数学、历史之后去掉一个空格
  • 仔细看,化学、数学、历史之后有两个空格

之后,如果我在列表中循环,它将打印以下内容:

'CLASS 8B CHEM | MON | 10AM to 10:40AM',
'--Rescheduled-- CLASS 8B MATHS | MON | 11AM to 11:40AM',
'CLASS 8B HIST | MON | 5PM to 5:40PM'

如果可能的话,我不知道如何正则表达式


Tags: to字符串列表数学历史单词histclass
2条回答

您可以尝试在CHEM、Math、HIST之后匹配零个或多个空白的正则表达式:

(?<=CHEM|HIST)\s*|(?<=MATHS)\s*

并使用re.sub替换为空白[]

Regex-demo

Python资源:

import re

classes_list = ['CLASS 8B CHEM  | MON | 10AM to 10:40AM',
                ' Rescheduled  CLASS 8B MATHS  | MON | 11AM to 11:40AM',
                'CLASS 8B HIST  | MON | 5PM to 5:40PM']

#regex-pattern
rePattern=re.compile("(?<=CHEM|HIST)\s*|(?<=MATHS)\s*")

classes_list=[rePattern.sub(' ',x) for x in classes_list]
print(classes_list)

输出:

['CLASS 8B CHEM | MON | 10AM to 10:40AM', ' Rescheduled CLASS 8B MATHS | MON | 11AM to 11:40AM', 'CLASS 8B HIST | MON | 5PM to 5:40PM']

如果您只是想删除双空格,请使用replace

[i.replace(' ', ' ') for i in classes_list ]

['CLASS 8B CHEM | MON | 10AM to 10:40AM', ' Rescheduled  CLASS 8B MATHS | MON | 11AM to 11:40AM', 'CLASS 8B HIST | MON | 5PM to 5:40PM']

相关问题 更多 >