我不太清楚如何说出我的问题,因为这不是人们常常会做的事情。 这是我的情况:
我有一个值列表。
Values= ["1","2","3","4"]
然后我希望能够单独访问每个值并将它们组合成一个字符串,并在它们之间使用逗号。我写了一些代码,我希望以这种方式格式化一个字符串(' {}' .format()),以便结果如下所示:' 1,2,3 ,4&#39 ;.到目前为止我的代码(如果可能的话,它也是我喜欢使用的代码结构)如下:
string = "{}".format(exec(
"Out= ''\n"
"for value in Values:\n"
" Out+= value + ','\n"
"Out"))
print(string)
如果,在作为' exec'的参数给出的字符串中。功能,我写"打印(输出)" IE:
string = "{}".format(exec(
"Out= ''\n"
"for value in Values:\n"
" Out+= value + ','\n"
"print(Out)"))
然后程序将正常运行并打印出来" 1,2,3,4",但它不会将其存储在'字符串' (这是预期的)
因此,我想添加一个函数,以确保它可以返回一些东西。我写了以下内容,但正如预期的那样它也没有用。 string仍然是None:
string = "{}".format(exec(
"def do_stuff():\n"
" Out = ''\n"
" for value in Values :\n"
" Out += value + ','\n"
" return Out \n"
"do_stuff()"))
现在,我确实意识到这种组合字符串的方法远不是组合字符串的首选方法,但让我给你一些背景。
我在python中制作游戏。有一个Character类,它包含各种数据类型的各种属性(如dict,list,int,str,float ....以及一些自定义的:AI,Item,ActiveSkill,PassiveSkill,Effect,Weapon,Armor等等...) 现在,我的计划是能够将游戏进度存储在json树中。为此,我开始为每个实体提供一个方法,将其所有属性转换为存储为字符串的json树。这样,当我想保存游戏并且它来到角色时,它将对其所有属性进行排序,但它还必须调用它所引用的对象(例如ActiveSkills) )。对于列表中的每个ActiveSkill,它必须调用自己的json语法字符串并使用逗号组合它们。
这是我的一些代码,可以帮助您了解我想要做的事情:
json += \
'"ActiveSkills":[{oActiveSkills}],' \
'"PassiveSkills":[{oPassiveSkills}].' \
'"Effects":[{oEffects}],'.format(
oActiveSkills=exec(
"Skills = ''\n"
"for skill in self.ActiveSkills:\n" # ActiveSkills is a list of ActiveSkill objects
" Skills+=skill.encode_to_json() + ','\n"
"return Skills"),
oPassiveSkills=exec(
"Skills = ''\n"
"for skill in self.PassiveSkills:\n" # PassiveSkills is a list of PassiveSkill objects
" Skills+=skill.encode_to_json() + ','\n"
"return Skills"),
oEffects=exec(
"Effects = ''\n"
"for effect in self.Effects:\n" # Effects is a list of Effect objects
" Effects+=effect.encode_to_json() + ','\n"
"return Effects"))
我知道这段代码目前还没有运行,因为你只能从一个函数中返回,但我真的不知道如何快速简单地解决它。
我作为最后手段保存的一个解决方案就是手工完成所有事情。 IE:有一些for循环从返回的值创建一个字符串。将此字符串添加到json字符串,之后您将使用"}手动打开和关闭,{"并确保没有","在末尾。然后对PassiveSkills和Effects重复此操作。最后,用"}关闭json字符串,"并将其添加到' json' (字符串类型)变量...
我想最大限度地减少占用的空间,我希望这个系统变得灵活,这样无论你有多少技能,你都可以继续添加越来越多的这些json字符串而不需要改变代码。
答案 0 :(得分:3)
使用','
加入列表:
Values = ["1","2","3","4"]
result = ",".join( Values )
print(result)
有关str.join(iterable)
的更多信息,请参阅在线文档中的here。
为了更好地存储字典和列表(以及使用pickle,对象),你应该查看Python标准库中的json和pickle包。
例如,使用json:
import json
mydata = {}
mydata['hello'] = { 'value1':1, 'valuuelist':[1,2,3,4] }
print(json.dumps(mydata))
输出:
{"hello": {"valuuelist": [1, 2, 3, 4], "value1": 1}}
所以,不要滚动你自己的编码器,除非真的必须。
答案 1 :(得分:0)
要将序列的每个元素连接成一个字符串,您可以使用join方法。
L=['1','2','3']
string=",".join(L)
print(L)