在Python 3中检测转义序列

时间:2017-06-29 03:20:20

标签: python python-3.x escaping

这是我得到的任务:

程序:quote_me()函数 quote_me接受一个字符串参数并返回一个字符串,如果打印,将显示包含添加双引号的字符串 检查传递的字符串是否以双引号(“\”“)开头,然后用单引号括起来 如果传递的字符串以单引号开头,或者如果不以引号开头,则使用双引号括起来 测试函数代码传递字符串输入作为quote_me()

的参数

这是我的代码 -

def quote_me(phrase):
    if phrase.startswith("\""):
        print('\' + phrase + \'')
    if phrase.startswith('\''):
        print("\" + phrase + \"")
    else:
        print("use quotations in your input for phrase")

quote_me("\"game\"")

输出:

'+词组+' 在输入中使用语录

期望的输出:'游戏'

我只是不知道我做错了什么以及如何解决它。提前谢谢。

2 个答案:

答案 0 :(得分:1)

您的代码中错过了引号。应该是:

def quote_me(phrase):
    if phrase.startswith("\""):
        print('\'' + phrase + '\'')
    if phrase.startswith('\''):
        print("\"" + phrase + "\"")
    else:
        print("use quotations in your input for phrase")

quote_me("\"game\"")
# Output: '"game"'

此外,您所需的输出与两部分的描述不符。

首先,您所需的输出似乎用单引号替换双引号。如果你想做替换而不是添加引号,并且你确定你的字符串的最后一个字符有相应的引号,你可能想要这样做:

def quote_me(phrase):
    if phrase.startswith("\""):
        print('\'' + phrase[1:-1] + '\'')
    if phrase.startswith('\''):
        print("\"" + phrase[1:-1] + "\"")
    else:
        print("use quotations in your input for phrase")

quote_me("\"game\"")
# output: 'game'

其次,您实际打印出一条警告消息,而不是“或者如果不是以引号开头,则用双引号括起来”。这听起来像你只是想要添加适当的引号(即添加引号并避免已经存在的引号类型)的问题。为此,你可以:

def quote_me(phrase):
    if phrase.startswith("\""):
        print('\'' + phrase + '\'')
    else:
        print("\"" + phrase + "\"")

quote_me("\"game\"")
# Output: '"game"'

答案 1 :(得分:0)

使用[]访问字符串中的第一个内容会使IMO更简单

def quote_me(phrase):
    if phrase[0] == "\"":
        print('dq')
        print('\'', phrase[1:-1] ,'\'')
    elif phrase[0] == ('\''):
        print('sq')
        print("\"", phrase[1:-1], "\"")
    else:
        print("use quotations in your input for phrase")

quote_me("\"game\"")