对编程来说是全新的,到目前为止我所学到的只是从网上类似的例子中复制过来的。你知道吗
这是一个随机的外语句子生成器。但是,如果字符串中的两个特定字符碰巧相邻出现,我想在它们之间插入一个字符。在本例中,我希望evowel和avowel变量中的字符用“y”分隔。你知道吗
我想我可以尝试一个有条件的split+rejoin,但我不知道如何搜索(在本例中)evowel\u avowel,在该边界处拆分它,插入y,然后将其连接回来。因此,随机生成的字符串“eametetuk”将更改为“eyametetuk”、“eseapah”>;“eseyapah”等
编辑:我需要能够处理任何在evowel与avowel的任何东西。为了简单起见,我只列出了每种语言的两个变体,但是这种语言有更多的元音和更多的变体(因此大约有60个变体需要发生这种变化)。你知道吗
我需要为此创建自己的函数吗?我想我需要正则表达式。你知道吗
import random
c1 = ("e","é")
c2 = ("a","se")
root = ("apa","mete")
tense = ("h","tuk")
avowel = ("a","á")
evowel = ("e","é")
#syntax
x = [c1,c2,root,tense]
#randomly selects morphemes
s = "".join([random.choice(i) for i in x])
print(s)
你可以做如下的替换。你知道吗
通过遍历字符串中的所有字符对,检查第一个字符是否在evowels中,第二个字符是否在avowels中,如果是,则返回第一个字符,后面跟着
y
,否则只返回第一个。如果在列表中执行此操作,则可以将其直接连接到生成的字符串:
因为分隔符和元音是函数的参数,所以它可以很容易地适应不同的需要:
使用正则表达式(
re
模块):该方法适用于任何evowel-avowel组合,例如:
等等。你知道吗
说明:我使用了
|
,它在正则表达式模式中表示逻辑或。然后我创建了两个组的模式-用括号表示,然后在re.sub
的第二个参数中,我写下我想要1stgroup,然后是字母y,然后是第二个group。你知道吗请注意
re.sub
的组索引从1开始,而不是从0开始,还请注意我使用了原始字符串,这意味着我不必转义\
以指向第一组和第二组。你知道吗相关问题 更多 >
编程相关推荐