Python 转换字符串
我不认为很多人会有这样的问题,但仍然。Python 转换字符串,python,python-2.7,Python,Python 2.7,我不认为很多人会有这样的问题,但仍然。 因此,我有一个python程序读取一个文件,该文件有一些命令供程序执行(我自己的语法)。 程序将文件逐行读取为字符串。 如果从文件中读取的命令是: '"Hello" + "World" + "!!!"' 我想将其转换为: "Hello" + "World" + "!!!" 因此python可以将其理解为: 'HelloWorld!!!' 尽管做了很多尝试,我还是没能做到。 帮助会被爱的。 我尝试过的一件事是使用compile函数执行代码: o
因此,我有一个python程序读取一个文件,该文件有一些命令供程序执行(我自己的语法)。
程序将文件逐行读取为字符串。
如果从文件中读取的命令是:
'"Hello" + "World" + "!!!"'
我想将其转换为:
"Hello" + "World" + "!!!"
因此python可以将其理解为:
'HelloWorld!!!'
尽管做了很多尝试,我还是没能做到。帮助会被爱的。
我尝试过的一件事是使用
compile
函数执行代码:
obj = compile('a = '"Hello" + "World" + "!!!"'', '<string>', 'exec')
exec(obj)
print a
预期产出:
The number is 42
在这种情况下可以做什么?您可以使用模块,使用类似shell的语法拆分字符串,然后在str.join()方法中使用列表理解来连接单词:
>>> import shlex
>>>
>>> ''.join([i for i in shlex.split(s) if i != '+'])
'HelloWorld!!!'
请注意,您可以简单地对字符串使用eval()
函数,但这根本不是一种安全的方法。除非您确定字符串不包含危险命令。您可以使用以下技巧:
m = '"Hello" + "World" + "!!!"'
print ''.join(m.replace('"', "").split(" + "))
产出:
HelloWorld!!!
首先替换“
,然后仅用的单词创建一个列表。拆分,然后从列表中生成一个带有''的字符串。join()
您的错误是将其放回字符串中。编译和评估降低了引用的一个级别,因此现在需要重复此过程。您可以使用“eval”“函数而不是编译分配,如下所示:
for line in open(your file....):
print eval(eval(line))
你错过了一个代码>在第二个代码标签上,对吗?在您只是要求解决方案而没有显示您的efforts@Borja看起来是的,谢谢指点out@UditDey你查过答案了吗?在什么意义上?接受他们?
for line in open(your file....):
print eval(eval(line))