开发者社区> 问答> 正文

根据条件使用列表中的元素格式化字符串

因此,我创建了一系列语法,供在我创建的类的方法中使用。每个列表可以是n个元素,因此通过列表索引放置每个单词是直接的wordlist [1:]的伪装,但是我需要使用| |。运算符,而这不能通过显式的字符串索引来完成(至少我认为是这样)。到目前为止,这是我写的:

noun_types = ['port', 'harbor', 'harbour']
target_pronouns = ['rotterdam', 'moscow']

grammer1 = (
                F"""
                S ->  Det N P NP
                P -> P
                NP -> '{target_pronouns[0]}' | '{target_pronouns[1]}'
                Det -> 'the' | 'a'
                P -> 'of'
                N -> '{noun_types[0]}' | '{noun_types[1]}' | '{noun_types[2]}'
                """)

理想情况下,我希望能够传递n个代词和名词的列表,并使用每个元素设置字符串的格式,而无需使用显式的字符串索引,因此如下所示:

noun_types = ['port', 'harbor', 'harbour']
target_pronouns = ['rotterdam', 'moscow']

grammer1 = (
                F"""
                S ->  Det N P NP
                P -> P
                NP -> '{target_pronouns[range(0, len(target_pronouns))]}'
                Det -> 'the' | 'a'
                P -> 'of'
                N -> '{noun_types[range(0, len(target_pronouns))]}'
                """)

但是,我不确定如何实现|运算符,更不用说进行字符串格式化时的任何条件格式化了。语法格式基于在此上下文中使用的nltk的语法构造函数:

from nltk.parse.generate import generate
from nltk import CFG

grammar = CFG.fromstring(grammer1)
for sentence in generate(grammar, n = 10, depth = 5):
words = ' '.join(sentence)

这是一个令人困惑的问题,因此我很乐意尝试澄清任何混淆!

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 15:58:06 575 0
1 条回答
写回答
取消 提交回答
  • 因此,我认为有一种方法可以这样做:预先用''字符转义字符串,然后使用“” |“ .join()将它们插入f字符串。

    在输入列表的每个字符串之前和之后添加'

    noun_types = [f"'{noun}'" for noun in noun_types]
    target_pronouns = [f"'{pronoun}'" for pronoun in target_pronouns]
    

    现在,您可以使用“ |” .join()将它们放入f字符串中。无论输入列表的大小如何,都可以使用它,而无需索引。

    print(f"""
    NP -> {' | '.join(target_pronouns)}
    N -> {' | '.join(noun_types)}
    """)
    

    输出:

    NP -> 'rotterdam' | 'moscow'
    N -> 'port' | 'harbor' | 'harbour'
    

    如果事情变得更加复杂,另一种解决方案可能是进入Jinja模板,尽管现在似乎可以对其进行破解并避免使用额外的库。

    回答来源:stackoverflow

    2020-03-24 18:34:01
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载