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))