Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么字符串中的变量和标点符号之间有额外的空格?python_Python - Fatal编程技术网

为什么字符串中的变量和标点符号之间有额外的空格?python

为什么字符串中的变量和标点符号之间有额外的空格?python,python,Python,字符串的输出中有一个额外的空格。这是代码中发生这种情况的部分。它发生在函数的字符串nameConfirmation()中 这是它给出的输出 Right... So your name is Raven . 如何去掉名称和标点之间的空格?逗号表示在同一行上的一个续行,中间有一个空格(您会注意到“is”和“Raven”之间有一个空格,即使两个字符串中都没有空格)。如果要删除空格,通常连接字符串的方法是使用加号 编辑:加号,而不是加号。。。愚蠢的我你可以用+附加字符串 print ("Right..

字符串的输出中有一个额外的空格。这是代码中发生这种情况的部分。它发生在函数的字符串nameConfirmation()中

这是它给出的输出

Right... So your name is Raven .

如何去掉名称和标点之间的空格?

逗号表示在同一行上的一个续行,中间有一个空格(您会注意到“is”和“Raven”之间有一个空格,即使两个字符串中都没有空格)。如果要删除空格,通常连接字符串的方法是使用加号


编辑:加号,而不是加号。。。愚蠢的我

你可以用
+
附加字符串

print ("Right... So your name is", name + ".")
输出:

Right... So your name is Raven.

通过print命令传递的每个参数自动用空格分隔。我看到您使用的是python 2,我使用的是python 3,所以我不确定此解决方案是否可行,但您可以尝试这样做:

print ("Right... So your name is ", name,".",sep='')

这基本上(假设它在python 2中也能工作)将参数之间的分隔改为无空格而不是1空格。

使用字符串变量替换
%s

def nameConfirmation():
    name = chooseName()
    print ("Right... So your name is %s." % name)
有关Python3中字符串操作和格式设置的详细信息,请检查以下内容:

如果您使用:

print ("Right... So your name is", name,".")
您会注意到输出是:

Right... So your name is Raven .
查看
is
name
Raven
)。您可以在输出中注意到一个空格(
是Raven
),这是因为
print()
有一个名为
sep
的默认参数,默认情况下它是
print(“对…所以您的名字是“,”name“,”sep=”)
。该参数是一个字符串,它被添加到与
打印
函数中的coma
连接的每段字符串的末尾。
因此,如果你做了
print('A','B')
,它将是
ab
,因为当你连接
A
B
时,
print
将添加
(和空格)作为胶水。
您可以配置它:
print('A','B',sep='glue')
将打印
AglueB

要解决你的问题,你可以做两个选择

  • 更改
    sep=''
    并在
    is
    之后添加空格:
    print(“对……所以您的名字是,”,name,”,sep='')
  • 或者,使用
    +
    连接最后两个字符串:
    print(“对……所以您的名字是“,”name+”)
还有很多其他的方法,比如:(在我的主观观点中,我是从最坏到最好排序的…)

  • print(“对……所以您的名字是%s.%name)
  • print(“对……所以你的名字是{}。”.format(name))
  • print(f“对……所以你的名字是{name}”)
与文档的链接:

  • (使用
    sep
    +
    %s
    .format()
    f-string
    ,以及字符串类的使用)
  • (基本和高级使用
    %s
    %d
    .format()
    ,值转换,
    日期时间
    ,)
p.S:这不是答案的一部分,只是一个注释

  • 打印(某物)
    不需要空间-->
    打印(某物)
  • 此外,sep=''还有一个名为
    end='\n'
    的函数,用于确定打印的结束(
    \n
    =新行)

p.S 2:感谢您提出添加一些文档链接的想法。我刚刚了解到,您可以执行
打印(%(键)s%mydict)

print()
函数的
sep
参数设置为
'
,但随后必须在“is”之后添加一个空格,这与
is
Raven
之间存在空格的原因相同。如果启用了
print
函数,则可能会出现与python中的语言混淆、符号和不起作用的重复,
sep
参数在2.6中已经可以使用原始输入,是否需要使用str(name)来连接?我不在计算机上,或者我想检查一下。@JosephRyle我用python2.7验证了
str()
是不需要的。谢谢。这很有效。我还没有在我的课堂上学到。“命运”也是一个有用的技巧,可以应用在C++中。欢迎我喜欢你的回答。非常翔实和完整。请考虑添加一些链接到参考答案/教程中的字符串操作和格式在Python 3在答案的结尾!@好的,我会开始搜索的!
Right... So your name is Raven .