如何利用句子的随机部分?

时间:2017-09-21 18:57:02

标签: python

我在使用Python编程时遇到了麻烦。我必须写长句,句子的随机部分有大写。这些是句子:

ülenurme vald. 
ülenurme vald asub tartu maakonnas ja jääb tartu linnast vahetult lõunasse.
ülenurme sai oma nime 17. sajandi alguses rajatud ülenurme mõisalt.
vallas asub ka tartu lennujaam, mille juures tegutseb eesti lennuakadeemia.

我必须把它变成这个:

ÜLENURME VALD. 
Ülenurme vald asub Tartu maakonnas ja jääb Tartu linnast vahetult lõunasse.
Ülenurme sai oma nime 17. sajandi alguses rajatud Ülenurme mõisalt.
Vallas asub Tartu lennujaam, mille juures tegutseb Eesti Lennuakadeemia. 

但问题是如何?????我是编程新手,刚刚开始,所以如果有人能帮助我,我会非常感激。

2 个答案:

答案 0 :(得分:0)

这是完全"随机"的一种方式,但效率不高:

def randomlyMakeUpperCase(passage, numCharsToUpper):
    for i in range(numCharsToUpper):
        randIndex = random.randint(0, len(passage) - 1)
        passage = passage[:randIndex] + passage[randIndex].upper() + passage[randIndex+1:]
    return passage

你可以这样运行:

passage = "this is a very long string and it goes on and on"
passage = randomlyMakeUpperCase(passage, 10)

它还缺少多次检查上壳体相同的字符,而上壳体字符不具有大写字母(如空格)。

虽然看一下上面的例子,看起来你想简单地用一些单词大写一下?或者也许是特定的词?

答案 1 :(得分:0)

嗯,首先,Python有一个名为capitalize()的方法。你的第一句话是全部大写的,所以你可以对那个句子做upper()

如果您有特定的单词应始终大写,您可以将变量设置为单词列表,然后拆分您的字符串,并使用for循环对其进行迭代,检查每个单词是否包含在那个变量。

capitalize_bank = ['ülenurme', 'tartu', 'eesti', "lennuakadeemia", "vallas"]

a = "vallas asub ka tartu lennujaam, mille juures tegutseb eesti lennuakadeemia"
a_new = ' '.join([s.capitalize() if s in capitalize_bank else s for s in a.split()])

print(a_new) 

# >> Vallas asub ka Tartu lennujaam, mille juures tegutseb Eesti Lennuakadeemia