使用Python编程。
我有两个由字符串组成的列表:
列表1:字符串由字母组成,例如a,b,c,d,''(单个空格),
列表2:字符串由特殊字符$,€,&,%,''(单个空格)组成。
示例:
list1 = ['a ',
'ab ',
'ba c',
' a b ',
'abd ']
list2 = ['$ ',
'€& ',
'€% &',
' $ € ',
'€&$ ']
两个列表中的实际问题均超过5个元素。 目标是:
1. to remove elements like: 'ba c', ' a b ' from list1
2. to remove elements like: '€% &', ' $ € ' from list2
我能够分两个步骤实现目标1:
步骤1:
list1[:] = [word for word in list1 if not (word[0] == ' ')]
第2步:
import re
regex1 = r"\s[\w]\s*"
list1[:] = [word for word in list1 if not (re.search(regex1, word))]
对于list2,我能够:
list2[:] = [word for word in list2 if not (word[0] == ' ')]
删除
之类的元素' $ € '
但是
regex2 = r"\s[\W]\s*" # on list 2
不会删除
之类的元素'€% &'
问题:
将list1上应用的step1和step2组合在一起的正则表达式是什么?
什么是正确的正则表达式而不是regex2?
如果list1和list2是串联的
list12 =['a ',
'ab ',
'ba c',
' a b ',
'abd ',
'$ ',
'€& ',
'€% &',
' $ € ',
'€&$ ']
删除诸如以下元素的正则表达式是什么
'ba c', ' a b ', '€% &', ' $ € '
如果存在以下模式,则从列表中删除该元素:
如果字符串的首字母是''(单个空格),例如'abcd','€€$%'
如果字符串的字符之间存在''(单个空格),例如'€%&','a b c','%&€€'
感谢您的帮助。谢谢。 :)
答案 0 :(得分:2)
如果模式要匹配左对齐的单词,则代码可能如下所示:
list12[:] = [word for word in list12 if re.match(r'^\S+\s*$', word)]
此代码将仅匹配末尾包含空格的字符串。 结果是:
a
ab
abd
$
€&
€&$