Python字符串格式错误

时间:2016-04-24 12:28:41

标签: python

这是非常基本的:

byGroup(Seq(1,2,3)) *_steps

它工作正常并打印出预期的结果,但如果我将最后一行替换为:

my_name="nishant"
my_age=24
print "My name is %s"%my_name
print "My age is %d & my name is %s, what are you ?" %(my_age, my_name)

我收到此错误:

print "My age is %d & my name is %s, what are you ?" %my_age , %my_name

我的问题是:

  1. 为什么File "my_tests.py", line 7 print "My age is %d & my name is %s, what are you ?" %my_age, %my_name ^ SyntaxError: invalid syntax != %(my_age, my_name)
  2. Python如何解释这样的内容?

6 个答案:

答案 0 :(得分:3)

您的代码段执行的内容是binary arithmetic operation,并且它需要单个对象作为第二个参数。

使用括号,您将此参数定义为两元素元组。我添加了额外的括号来强调如何解释代码。

  View view = new View(OneDayTimeTable.this);
    TextView tv = (TextView)view.findViewWithTag("mon_11.30");

如果没有,参数是单个元素,print ("My age is %d & my name is %s, what are you ?" % (my_age, my_name)) 被解释为print statement的第二个参数。

  

print依次计算每个表达式并写入结果   反对标准输出

, %my_name

由于print ("My age is %d & my name is %s, what are you ?" % my_age), (%my_name) 是无效的Python表达式,因此会引发%my_name

答案 1 :(得分:1)

%是一个运营商,就像+-/*&|等就像你不能做4 * 5, * 6一样,你不能做'%s %s' % 'here', % 'there'。实际上,x % y只是x.__mod__(y) 1 的捷径。因此,

'%s %s' % ('here', 'there') -> '%s %s'.__mod__(('here', 'there'))

两次使用%没有意义:

'%s %s'.__mod__('here'), .__mod__('there')

1 y.__rmod__(x)如果x.__mod__()不存在。

答案 2 :(得分:0)

>>> print "My name is %s & my age is %d, what are you?" % (my_name, my_age)
My name is nishant & my age is 24, what are you?

在%符号后面传递一个你需要的变量元组。

对不起,我在之前的回答中误解了你的问题。

答案 3 :(得分:0)

因为格式化程序需要一个元组。

答案 4 :(得分:0)

这是字符串的python语法,您可以阅读python文档,了解具有两个以上变量的转换说明符的工作原理:

https://docs.python.org/2/library/stdtypes.html#string-formatting-operations

这只是一个设计解决方案,开发人员认为是最好的。当有多个变量时,Python需要一个元组。

答案 5 :(得分:0)

%运算符只应出现一次 - 它不是变量名的一部分。这就是你通常会看到它的用法:

print "My age is %d & my name is %s, what are you ?" % (my_age, my_name)

%和元组之间的空间只是为了强调它们的独特性。