尝试将字母数字部分与字符串分开 例如:如果传递的输入是
BMW X5
我将得到的输出看起来像
X5
使用内置函数 .isalnum(( 将字母数字与其他单词分开,但输出仍然显示错误。 这
name= 'BMW X5'
if name.isalnum():
model = list(filter(lambda x: x.isalnum(), name.strip().split()))
else:
model = name
预期输出 X5,但这段代码的输出是"BMW X5">
添加not str.isalpha
:
name= 'BMW X5'
if name.replace(' ', '').isalnum():
model = ' '.join(i for i in name.split() if i.isalnum() and not i.isalpha())
else:
model = name
print(model)
输出:
'X5'
问题是,如果str
纯粹按字母顺序排列,str.isalnum
则返回True
:
'AAA'.isalnum()
# True
删除纯字母顺序的单词(即str.isalpha == True
(因此可以解决问题。
通过使用正则表达式
import re
def extract_alnum(name):
name = name.split(' ')
result = list(filter(lambda s: bool(re.search(r'd', s)), name))
return result
结果:
extract_alnum('BMW X5')
['X5']
你可以改用正则表达式 - 从这里借用,你可以使用下面的正则表达式来检索字母数字单词:
(?:[0-9][^ ]*[A-Za-z][^ ]*)|(?:[A-Za-z][^ ]*[0-9][^ ]*)
您可以在此处在线测试和修改正则表达式。