【问题标题】:Extra '\' character in string python字符串python中的额外'\'字符
【发布时间】:2015-01-02 14:23:30
【问题描述】:

我正在尝试将用户输入作为函数的参数。我这样做了:

关于 Utilities.py

def EnterVersion()
    gVer = ""
    tgVer = ""
    while True:
          gVer = input(" Enter game version : ")
          if gVer ='':
             tgVer = tgVer[:-1]
             break
          else:
            gVer = '\'' + gVer + '\'' + ','
            tgVer += gVer

    tgVer = "\"(%s)\""%tgVer
    print(tgVer)
    return tgVer

关于a.py

game_version = ""

def getGameVersion()
    game_version = utilities.EnterVersion()
    return game_version

当用户这样输入时:

输入游戏版本:1
进入游戏版本:2

编辑:
我正在为 Python 使用 VS
脚本的输出(在命令行上)很好:

"('1','2')"

但是,当我将 watch 放在变量上时,它是这样的:

输出将是这样的:

"(\'1\',\'2\')"

没有额外的'\'。

因此,鉴于输入我的查询(我正在使用 pandas)没有运行。

因为它读取游戏版本为:

'\1'\ 和 '\2\' ,或
\'1\' 和 \'2\'

我知道 '\' 用于在 python 中编写特殊字符。
但是为什么我把它放在我的身上呢?
任何人都可以向我解释为什么我的字符串上有额外的“\”?

【问题讨论】:

  • 你的代码能编译吗? (它不适合我)。这条线似乎错了gVer = '\'' + gVer + '\'' + ','
  • 嗯,是的,我可以编译它。我使用的是 3.3.2 版
  • @smushi 将 input() 替换为 raw_input()
  • 解决了!我很愚蠢,没有意识到我的错误:啊,我找到了!!!..在 EnterVersion() 上我添加了额外的“””所以它错误..不是因为 '\'

标签: python string pandas


【解决方案1】:

用python2.7运行下面的代码就可以了:

def EnterVersion():
    gVer = ""
    tgVer = ""
    while True:
          gVer = raw_input(" Enter game version : ") #use raw_input here
          if gVer == '':
             tgVer = tgVer[:-1]
             break
          else:
            gVer = '\'' + gVer + '\'' + ','
            tgVer += gVer

    tgVer = "\"(%s)\""%tgVer
    print(tgVer)
    return tgVer

结果:

 Enter game version : 2
 Enter game version : 4
 Enter game version : 1
 Enter game version : 2
 Enter game version : 
"('2','4','1','2')"

编辑:你所做的一切都很好!但是您不应该在调试模式下看到结果,因为它使用将在代码中表示的字符串,而不是真正的输出。即如果你在调试模式下看到"abc",而真正的输出字符串是abc,如果你在调试模式下看到“\'hi\'”,那么真正的输出字符串就是'hi',没关系!

【讨论】:

  • 我使用的是 3.3.2 版本。啊,是的,对不起。我把你们都弄错了方向。会更新
  • @noobsee 看我的编辑,你的代码没问题,但你对表示的字符串和实际的输出字符串感到困惑。
  • 啊,我找到了!!!..在 EnterVersion() 上我放了额外的 " " " 所以它出错了.. 不是因为 '\'
【解决方案2】:

当我尝试运行您的代码时,您的代码出现了一些语法错误。在不更改代码的情况下,它也是您的预期输出。

def EnterVersion():
    gVer = ""
    tgVer = ""
    while True:
          gVer = input(" Enter game version : ")
          if gVer =='':
             tgVer = tgVer[:-1]
             break
          else:
            gVer = '\'' + gVer + '\'' + ','
            tgVer += gVer

    tgVer = "\"(%s)\""%tgVer
    print(tgVer)
    return tgVer


if __name__ == "__main__":
    game_version = EnterVersion()
    print(game_version)

【讨论】:

  • 它的输出是什么?
  • "('5','5')" 这是python3.3的输出
猜你喜欢
  • 2020-11-25
  • 2010-11-15
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多