Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将随机字符中的字符串与列表连接起来?_Python_List_Concatenation_String Concatenation - Fatal编程技术网

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

Python 如何将随机字符中的字符串与列表连接起来?,python,list,concatenation,string-concatenation,Python,List,Concatenation,String Concatenation,我有一个脚本,它从URL中提取随机单词,并与列表中存储的其他特殊字符连接: 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 = te

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

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\uuuu 2”-”

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

我还尝试了:

   random_char = ''.join(string.punctuation for i in range(0,1))

取而代之的是使用一个特殊的字符列表,但这也不起作用。

random.choices
提供了一个列表。您可以访问列表中的内容,例如:
special\u char[0]
,而不是将列表转换为字符串,然后乱动字符串。这样,就不会得到列表的字符串表示形式中的撇号
str(特殊字符)
==>
['-','@']
(例如)。如果你加入(特殊字符),你只会得到
-,@
。如果你不想在两者之间加逗号,只需
”。join(特殊字符)
给出
-@

另外,
random\u num2=[randint(0,10)]
创建一个只有一个数字的列表。 如果只想访问列表中的数字,则需要
random\u num2[0]
。 或者您可以将它们全部转换为字符串并使用
“,”.join()
,就像我们对
特殊字符所做的那样

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\u num2
作为列表,否则您应该执行
random\u num2=randint(0,10)
。那你就可以做了

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

不确定您希望最终输出是什么,但请尝试:

random_num2 = [randint(0,10)][0]  
然后:

也可以通过索引获取特殊字符:

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

范围是独占的,因此
range(0,1)=[0]
另外,您的预期输出是什么?谢谢,它似乎可以工作。random_num2=[randint(0,10)]背后的原因是我只想要一个数字。随机_num2[0]之间的区别是什么?它还应该返回一个数字。
randint(0,10)
返回一个介于0和10之间的随机整数。在将列表分配给
random\u num2
之前,您将其放入了一个列表中。要访问列表的
x
th元素,您需要执行
random\u num2[x]
,或者
random\u num2[0]
,因为它只有一个您想要访问的元素。好的,谢谢,我现在明白了。顺便说一句,我不知道为什么你的答案被否决了,我选择了它作为有用的。@Steven,不客气。你应该投票选出你认为有用的答案。今天有人否决了我所有的答案。不过不用担心,所有不合法的反对票将在UTC今天凌晨3点被删除。谢谢,这同样有效!f{}是字典吗?如果是这样的话,我不明白为什么要用它。不,它是一个f字串。Python 3中的字符串格式快捷方式。它允许您直接将变量等注入字符串。
final_string = f"{''.join(map(str, special_char))}{words[random_num]}__{random_num2}{special_char2[0]}"