【问题标题】:Concatenating two strings not working连接两个字符串不起作用
【发布时间】:2018-03-13 16:36:52
【问题描述】:

我有以下代码:

name=input("What do you want to call your file?")
print(name)
name=name+".txt"
print(name)

当我运行它时,我得到:

<whatever was input>
.txt

我想得到:

<whatever was input>
<whatever was input>.txt

我已经尝试过:

input("What do you want to call your file?")+".txt"

还有:

input("What do you want to call your file?")
+=".txt"

但没有运气。

奇怪的是,当我在 shell 中运行它时,它可以运行 l,而且它在 python 3.1 中运行,但在 3.4 中运行。

【问题讨论】:

  • 无法复制……
  • 它按预期工作
  • 如果你使用 shell,它对我有用。在命令提示符下(当我只是双击程序时)我遇到了问题。已将其添加到我的问题中。
  • 在另一台电脑上试了一下,没问题。想知道发生了什么。它使用的是 Windows 7 Proffesional,32 位,稍后将发布它引发错误的那个。

标签: python python-3.x text


【解决方案1】:

删除末尾的换行符:

name = input("Q?").rstrip('\n') + "txt"

或者这样做:

# thanks to Delirious Lettuce: f'{input("Filename?").rstrip('\n')}.txt'.replace("\n","") 
name = f'{input("Filename?")}.txt'.replace("\n","")
print(name)

但难点在于,input() 通常会移除关闭其输入的返回。

我想知道为什么你会得到一个......对我来说name = f'{input("Filename?")}.txt' 有效,如果我输入“tata”并按回车,name 会显示为'tata.txt'

【讨论】:

  • @DeliriousLettuce 感谢您的收获-似乎我在 pyfiddle.io 中使用 rstrip() 时没有使用 \n
  • 添加到我的问题中,它在 shell 中工作。是否有可能它不会删除命令提示符中的 \n?
  • 使用代码 filename=exec("input('Filename?')+'.txt'") ,我得到错误:file=open(filename, "w") TypeError: invalid file: None
  • rstripreplace 不起作用,与问题中的问题相同。仍在 shell 中工作。
  • @ArtemisFowl 您在滥用 exec。如果 Python 函数没有隐式返回某些内容,则它们总是返回 None。 Exec 不返回任何内容。所以它返回无。仔细阅读exec - 第一段。
猜你喜欢
  • 2015-09-17
  • 1970-01-01
  • 2021-01-26
  • 2018-09-03
  • 2013-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-19
相关资源
最近更新 更多