如何将随机字符中的字符串与列表连接起来?

问题描述

我有这个脚本,该脚本从URL中提取随机单词,并将其与存储在列表中的其他特殊字符连接在一起:

Autocomplete

输出如下:import requests import random from random import randint import string url = 'https://svnweb.freebsd.org/csrg/share/dict/words?view=co&content-type=text/plain' r = requests.get(url) text = r.text words = text.split() random_num = randint(0,len(words)) random_num2 = [randint(0,10)] special_list = ['#','!','@','-','@'] union = "".join(str(x) for x in special_list) special_char = random.choices(union,k=2) special_char2 = random.choices(union) final_string = (str(special_char).strip('[]') + words[random_num] + '__' + str(random_num2).strip('[]') + str(special_char2).strip('[]'))

问题是,即使我使用'-','@'auxiliary__2'-'也无法摆脱.join并将所有内容连接在一起。

我也尝试过:

''

而不是使用特殊字符列表,但这也不起作用。

解决方法

不确定确切的最终输出是什么,但是请尝试:

random_num2 = [randint(0,10)][0]  

然后:

final_string = f"{''.join(map(str,special_char))}{words[random_num]}__{random_num2}{''.join(map(str,special_char2))}"

或者您可以通过索引获取特殊字符:

final_string = f"{''.join(map(str,special_char))}{words[random_num]}__{random_num2}{special_char2[0]}"
,

random.choices给您一个列表。您可以像这样访问列表中的内容:special_char[0]而不是将列表转换为字符串并弄乱字符串。这样,您将不会获得列表的字符串表示形式中的撇号。 str(special_char) ==> ['-','@'](例如)。如果您执行",".join(special_char),则只会得到-,@。如果您不想在两者之间使用逗号,则只需"".join(special_char)即可得到-@

此外,random_num2 = [randint(0,10)]创建一个仅包含一个数字的列表。 如果您只想访问列表中的数字,则需要random_num2[0]。 或者,您可以将它们全部转换为字符串,然后像使用",".join()

一样使用special_char
random_num2_str = [str(num) for num in random_num2]
special_char = random.choices(union,k=2) 
special_char2 = random.choices(union)

final_string = ",".join(special_char) + words[random_num] + '__' + ",".join(random_num2_str) + special_char2[0]

除非您确实需要random_num2作为列表,否则应该进行random_num2 = randint(0,10)。然后,你可以做

final_string = ",".join(special_char) + words[random_num] + '__' + str(random_num2) + special_char2[0]