簡體   English   中英

如何在現有字符串中生成隨機字符?

[英]How to generate random characters within an existing string?

我正在制作一個文本轉換器,我想在一個已經存在的字符串中選擇隨機字符。

當我研究它時,出現的只是想在字母表中生成隨機字母的某人或想生成隨機字符串的某人。 那不是我要找的東西。

new_string = ""
index = 0

for letter in input_text:
    if letter not in "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM":
        new_string = new_string + (letter)
        continue
    index += 1
    if index % 2 == 0:
        new_string = new_string + (letter.upper())
    else:
        new_string = new_string + (letter.lower())

我現有的文本轉換器將其他所有字母都大寫,但是我想讓它隨機地將字母大寫。 這可能嗎?

您可能需要查看random庫(內置)中的random.choicerandom.choices函數,該函數可讓您從列表中隨機選擇一個項目:

>>> import random
>>> a = random.choice("ABCDabcd")
'C'
>>> my_text = "".join(random.choices("ABCDabcd", k=10))
'baDdbAdDDb'

為了隨機使用大寫字母,您可以從字母的大小寫版本列表中進行choice

import random

new_string = ""
for letter in input_text:
    if letter not in "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM":
        new_string = new_string + (letter)
    else:
        new_string += random.choice([letter.upper(), letter.lower()])

(請注意, random.choices返回一個list ,而不是str ,因此我們需要將這些元素join()在一起。)


最后,您可能還想使用isalpha函數:

>>> "A".isalpha()
True
>>> "a".isalpha()
True
>>> "7".isalpha()
False

相關問題


但是upper()lower()函數對非字母字符無效。 因此,您可以從代碼中完全刪除此檢查:

new_string = ""
for letter in input_text:
    new_string += random.choice([letter.upper(), letter.lower()])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM