使用Python查找同时包含字母和数字的单词


Python 是一种高级编程语言,具有各种工具和内置函数来分析文本数据。本问题陈述是一个常见任务,它使用一些内置函数——filter()、isdigit()、isalpha()、findall()、split()和append()——来使用 Python 查找同时包含字母和数字的单词。

让我们看看如何获取程序的输入以获得结果

输入

my_text = "WELCOME TO CLUB100"

输出

CLUB100

语法

以下语法在示例中使用:

filter()

当根据特定条件过滤项目时,应用 filter() 方法。简单来说,它允许用户迭代提取的元素以满足条件。

isdigit()

isdigit() 是 Python 中的内置方法,如果找到的字符是数字则返回 true,否则返回 false。

isalpha()

如果所有字符都是 a-z 之间的字母,则此内置函数返回 true。

re.findall()

findall() 方法遵循名为 re 的模块以返回字符串列表。re 代表正则表达式,它尝试从输入文本中匹配模式。

split()

split() 是 Python 中的内置方法,它将单词列表分解成字符串。

append()

append() 函数用于将文本元素添加到列表的末尾。

使用正则表达式

程序在相应的变量中使用正则表达式符号,并使用内置函数 findall() 查找字母。

示例

在下面的示例中,首先定义名为 find_alphabet_num 的函数,该函数接受文本字符串作为参数。然后,该函数使用正则表达式查找包含字母和数字的文本的模式匹配。接下来,它将使用遵循 re 模块的 findall() 方法查找模式文本的所有出现。

import re
def find_alphabets_num(text):
    pattern = r'\b(?=\w*\d)(?=\w*[a-zA-Z])\w+\b'
    words = re.findall(pattern, text)
    return words
# create the string
my_text = "This is RX100"
# function call
result = find_alphabets_num(my_text)
print(result)

输出

 ['RX100']

使用列表推导和 split 方法

程序使用 split() 分隔各个单词,并使用列表推导包含各种内置函数——isdigit()、isalpha() 和 any()——来迭代循环。

示例

在下面的示例中,函数 find_alphabet_num 接受一个输入字符串。然后,split 函数将输入文本分成单词,只包含包含字母和数字的单词。接下来,使用 return 函数将单词作为列表返回。然后创建一个字符串存储在变量 **my_text** 中。函数调用将使用变量 result 传递参数,即 **my_text**。最后,我们借助变量 **result** 打印输出。

def find_alphabet_num(text):
    words = text.split()
    filtered_words = [word for word in words if any(c.isdigit() for c in word) and any(c.isalpha() for c in word)]
    return filtered_words
# Create the string
my_text = "Microsoft365, MS Word, MS Excel"
# function call
result = find_alphabet_num(my_text)
print(result)

输出

 ['Microsoft365,']

使用循环和字符串方法

程序使用 for 循环通过使用递归函数、split()、any()、isalpha() 和条件语句来迭代输入字符串。

示例

在下面的示例中,首先定义名为 **find_words_alphabet** 的函数,该函数接受参数名称 text(接收输入字符串值)。然后,split() 方法分隔单词并检查单词是否包含字符串作为输入。接下来,使用三个简单的步骤——创建字符串、函数调用和 print 函数——来获得所需的结果。

def find_words_alphabets_num(text):
    words = text.split()
    filtered_words = []
    for word in words:
        if any(c.isdigit() for c in word) and any(c.isalpha() for c in word):
            filtered_words.append(word)
    return filtered_words

# Create the string
my_text = "Microsoft365, MS Word, MS Excel"
# function call
result = find_words_alphabets_num(my_text)
print(result)

输出

['Microsoft365,']

使用 Lambda 函数和 filter()

程序使用 filter() 删除字符串中包含数字的字符。lambda 函数使用 for 循环和内置函数 [any() 和 isdigit()] 计算字母和数字的结果。

示例

在下面的示例中,函数 **find_alphabet_number** 接受参数 **text**,通过函数调用接收字符串的值。然后,它将使用名为 **split()** 的方法使用内置方法 **filter()** 和 **lambda** 分隔所有包含数字和字母的单词,并将它们存储在变量 **words** 中。接下来,它使用 return 函数返回列表。接下来在变量 my_text 中创建输入字符串。然后在变量 result 中使用函数调用,并在 print 函数中使用相同的变量来获得结果。

def find_alphabet_number(text):
    words = text.split()
    filtered_words = filter(lambda word: any(c.isdigit() for c in word) and any(c.isalpha() for c in word), words)
    return list(filtered_words)

# Create the string
my_text = "My World123"
result = find_alphabet_number(my_text)
print(result)

输出

 ['World123']

结论

我们讨论了查找同时包含字母和数字的单词的各种方法。例如,正则表达式有助于设置包含字母及其数字的输入文本的模式匹配,而其他内置函数也可以解决同样的问题。

更新于:2023年8月16日

524 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告