gpt4 book ai didi

python - 如何在字符串中提取与关键字列表中的某些内容匹配的单词

转载 作者:行者123 更新时间:2023-11-28 23:03:04 27 4
gpt4 key购买 nike

我是 Python 的新手。我可以将文件的一行拆分成单词,但还没有找到如何获取与一组关键字匹配的单词。

    fread = open (F_FIXED_EERAM, 'r')
KEYWORDS = ['tINT16', 'tUINT16', 'tGDT_TYPE']
for line in fread.readlines():
words = line.split()
for word in words:
if word in KEYWORDS:
# I want to append the word after the keyword to a new string in another file
# How do I get at that word?
...

最佳答案

如果找到关键字,只需设置一个 bool 值来存储下一个单词:

KEYWORDS = ['tINT16', 'tUINT16', 'tGDT_TYPE']
result = []

with open (F_FIXED_EERAM, 'r') as fread:
for line in fread:
store_next = False
words = line.split()
for word in words:
if store_next:
result.append(word)
store_next = False
elif word in KEYWORDS:
store_next = True

result 现在是所有以 KEYWORDS 之一开头的单词的列表。

我假设如果上一行的最后一个词是关键字,则不必存储下一行的第一个词。如果您确实想要此行为,请将 store_next = False 移到(外部)for 循环之外。


或者您可以使用 regular expression :

import re

KEYWORDS = ['tINT16', 'tUINT16', 'tGDT_TYPE']

regex = '(?:{}) +(\\w+)'.format('|'.join(map(re.escape, KEYWORDS)))

with open ('in.txt', 'r') as file_:
print(re.findall(regex, file_.read()))

这可能看起来很神奇,但这是实际使用的正则表达式:

(?:tINT16|tUINT16|tGDT_TYPE) +(\w+)

转换为:匹配其中一个关键字后跟一个或多个空格后跟一个词。 ?: 开头告诉 Python 不要存储该组。 \w 等同于 [a-zA-Z0-9_](取决于 LOCALE 和 UNICODE 标志)。

关于python - 如何在字符串中提取与关键字列表中的某些内容匹配的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8981324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com