Python 不获取输出I';当使用.join时,我正在等待
我正在尝试使用.join删除括号和逗号。它在我的程序中的其他地方起作用,但在这里不起作用。代码如下:Python 不获取输出I';当使用.join时,我正在等待,python,Python,我正在尝试使用.join删除括号和逗号。它在我的程序中的其他地方起作用,但在这里不起作用。代码如下: def load(): fileName = raw_input("Please enter the name of the save file to load. Please don't enter '.txt'.") return open(fileName+".txt", "r") fileToLoad = load() fileData = fileTo
def load():
fileName = raw_input("Please enter the name of the save file to load. Please don't enter '.txt'.")
return open(fileName+".txt", "r")
fileToLoad = load()
fileData = fileToLoad.readlines()
code = (fileData[4])
splitcode = "".join(code)
print code
print splitcode
我得到的两个结果都是:
['Y', 'G', 'R']
['Y', 'G', 'R']
我认为第二个输出应该是:
YGR
谢谢你的帮助 似乎
code
是文本字符串“['Y','G','R']
”,而不是join
按预期工作所需的列表。解决此问题的最简单方法是首先通过调用将code
转换为列表,或者,如果您可以绝对确定文件内容不包含恶意或格式错误的内容,则可以尝试将其转换为有效的JSON,然后加载该JSON,而不是执行类似eval
的危险操作
code = code.replace("'", '"')
listified = json.loads(code)
joined = ''.join(listified)
因此,您打开的文件中有一行包含Python格式的列表(作为字符串),其中包含元素
Y
、G
和R
?如果你想加入元素,你必须先把它们加载到一个真正的列表中。首先,您是否控制正在读取的文件的格式?我的第一个倾向是尝试将其保存在CSV或更易于机器读取的东西中。基本上,['Y','G','R']
只是游戏策划人的代码。我现在用了eval,效果很好!我试着做ast.literal\u评估,但没有成功。没有什么大不了的,因为eval很好,但我得到的错误是没有定义ast。谢谢@JaAnTr:如果未定义ast
,则表示您使用的是Python的2.6之前版本。也许是时候升级了。eval
不是个好主意。这意味着任何人只要修改你的程序文件,就可以运行任意代码。@JaAnTr-只需在顶部键入“import ast”。您不应该真正使用纯eval。@jwodder我正在运行Python 2.7.5。知道为什么会这样吗?