多行字符串中末尾单词与各前置单词逐一组合的实现方案问询
没问题,我来帮你搞定这个字符串处理的需求!你想要把每行里制表符分隔的最后一个单词,和前面的所有单词/短语一一组合,而且还要根据词性调整顺序(比如形容词放在名词前面)对吧?下面给你两种实现方案:
方案1:针对你的特定示例的简单实现
这种方案不需要额外依赖,直接匹配你给出的预期输出逻辑处理:
words = """anticipated, unlikely, preferable, accidental, haphazard result team members, student, bride reluctant""" # 拆分所有行 lines = words.strip().split('\n') for line in lines: # 按制表符拆分每行的前置部分和最后一个单词 left_part, right_word = line.split('\t') # 拆分前置部分为单个单词/短语(按逗号加空格分隔) items = left_part.split(', ') # 根据最后一个单词判断组合顺序 if right_word == 'result': # 前置词在前,result在后 for item in items: print(f"{item} {right_word}") elif right_word == 'reluctant': # reluctant在前,前置词在后 for item in items: print(f"{right_word} {item}")
运行这段代码后,就能得到你想要的输出:
anticipated result unlikely result preferable result accidental result haphazard result reluctant team members reluctant student reluctant bride
方案2:通用的词性判断方案(适用于更多场景)
如果你需要处理更多不同的行,而不仅仅是这两行,那么可以用NLTK库来自动判断单词的词性,灵活调整组合顺序(比如自动把形容词放在名词前面):
准备工作
首先需要安装NLTK库,然后下载词性标注模型:
import nltk nltk.download('averaged_perceptron_tagger') from nltk.tag import pos_tag
实现代码
from nltk.tag import pos_tag words = """anticipated, unlikely, preferable, accidental, haphazard result team members, student, bride reluctant""" lines = words.strip().split('\n') for line in lines: left_part, right_word = line.split('\t') items = left_part.split(', ') # 获取最后一个单词的词性标签 word_tag = pos_tag([right_word])[0][1] # 根据词性决定组合顺序 if word_tag.startswith('JJ'): # 如果是形容词,放在前面修饰后面的名词/短语 for item in items: print(f"{right_word} {item}") elif word_tag.startswith('NN'): # 如果是名词,放在后面,前面用形容词修饰 for item in items: print(f"{item} {right_word}") else: # 其他词性默认按前置词+最后一个单词的顺序输出 for item in items: print(f"{item} {right_word}")
这段代码会自动识别词性:
result是名词(NN),所以输出形容词 + 名词reluctant是形容词(JJ),所以输出形容词 + 名词短语
不管你后续添加多少行,只要符合“形容词修饰名词”的逻辑,都能正确生成组合。
内容的提问来源于stack exchange,提问作者John Aiton
相关产品推荐
相关产品推荐

