Python - 如何在字典中的字符串中打印一个反斜杠?

时间:2017-03-10 16:23:37

标签: python string dictionary

我有一些包含一些字符串的字典,其中一个字符串中有两个反斜杠。我想用一个反斜杠替换它们。

这些是反斜杠: IfNotExist \\ u003dtrue

Configurations = {
        "javax.jdo.option.ConnectionUserName": "test",
        "javax.jdo.option.ConnectionDriverName": "org.mariadb.jdbc.Driver",
        "javax.jdo.option.ConnectionPassword": "sxxxsasdsasad",
        "javax.jdo.option.ConnectionURL": "jdbc:mysql://hive-metastore.cr.eu-west-1.rds.amazonaws.com:3306/hive?createDatabaseIfNotExist\\u003dtrue"

}
print (Configurations)

当我打印时,它会一直显示两个反斜杠。我知道逃避反斜杠的方法是使用\它在常规字符串中起作用,但它在字典中不起作用。

有什么想法吗?

5 个答案:

答案 0 :(得分:3)

问题来自编码。

实际上\u003d=的UNICODE表示。

反斜杠被另一个反斜杠转义,这是一件好事。

您可能需要:

  1. \u003d替换为=

  2. 将其作为unicode读取,然后您应该在u之前加上u"hi \\u003d"字符串,可能没问题

答案 1 :(得分:1)

使用时打印字典 print (Configurations),它会打印出词典的 repr()

你会得到

{'javax.jdo.option.ConnectionDriverName': 'org.mariadb.jdbc.Driver', 'javax.jdo.option.ConnectionUserName': 'test', 'javax.jdo.option.ConnectionPassword': 'sxxxsasdsasad', 'javax.jdo.option.ConnectionURL': 'jdbc:mysql://hive-metastore.cr.eu-west-1.rds.amazonaws.com:3306/hive?createDatabaseIfNotExist\\u003dtrue'}

你需要打印出你的字典 print (Configurations["javax.jdo.option.ConnectionURL"])

print (str(Configurations["javax.jdo.option.ConnectionURL"])) 注意: str()已添加

然后输出

jdbc:mysql://hive-metastore.cr.eu-west-1.rds.amazonaws.com:3306/hive?createDatabaseIfNotExist\u003dtrue

有关详情,请查看Python Documentation - Fancier Output Formatting

  

str()函数用于返回值的表示   是相当人类可读的,而repr()是要生成的   可由解释者阅读的表示(或将强制执行   如果没有等效语法,则为SyntaxError。

答案 2 :(得分:1)

打印字典会显示字典对象的表示形式。它并不一定能让你很好地展示它里面的一切。要做到这一点,你需要做:

for value in Configurations.values():
    print(value)

答案 3 :(得分:0)

如果要使用单个反斜杠而不是双反斜杠来表示该字符串,则需要str()表示,而不是repr()。当您打印字典时,您始终会获得所包含字符串的repr()

您可以自行格式化字典来打印str(),如下所示:

print ( "{" +
    ', '.join("'{key}': '{value}'".format(key=key, value=value)
              for key, value in Configurations.items()) +
    "}")

答案 4 :(得分:0)

根据您打印字符串的方式,Python将打印两个反斜杠,其中字符串实际上只有一个。这是Python指示反斜杠是实际反斜杠的方式,而不是转义字符的一部分;例如,因为打印实际上会显示回车符'\ n'。

尝试将字符串写入文件,然后在编辑器中打开文件。

(Linux的..)

> f = open('/tmp/somefile.txt', 'w')
> f.write(sometextwithbackslashes)
> \d
$ vi /tmp/somefile.txt