我有一个配置文件,其中包含一个以制表符分隔的字符串.我想检索该字符串,然后将其转换为一个很好的列表.但是,当我直接在iPython上做这件事时,我看到了一些我看不到的有趣的东西.
[myvars]
myString = "a\tb\tc\td"
.....
.....<many more variables>
Run Code Online (Sandbox Code Playgroud)
我的Python代码有这个:
param_dict = dict(config.items(myvars))
str1 = param_dict["myString"]
print str1
print str1.split()
Run Code Online (Sandbox Code Playgroud)
它打印出来:
"a\tb\tc\td"
['"a\\tb\\tc\\td"']
Run Code Online (Sandbox Code Playgroud)
但是,当我在我的python控制台上做同样的事情时,我得到了我的期望:
Python 2.7.6 (default, Mar 22 2014, 22:59:38)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> "a\tb\tc\td".split()
['a', 'b', 'c', 'd']
>>> k = "a\tb\tc\td"
>>> k.split()
['a', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?有人可以帮我吗?我无法更改配置文件变量的格式.而且,我想把变量拿出来并剥离成一个很好的列表.
谢谢.
这里正在读取反斜杠,打印普通字符串时不会看到这种情况,但是如果打印repr则会看到.
In [11]: myString = "a\\tb\\tc\\td"
In [12]: print(myString)
a\tb\tc\td
In [13]: print(repr(myString))
'a\\tb\\tc\\td'
Run Code Online (Sandbox Code Playgroud)
您可以使用decode转换\\t为\t:
In [14]: myString.decode('string_escape')
Out[14]: 'a\tb\tc\td'
Run Code Online (Sandbox Code Playgroud)
一旦它们成为标签,您就可以拆分它们:
In [15]: myString.split()
Out[15]: ['a\\tb\\tc\\td']
In [16]: myString.decode('string_escape').split()
Out[16]: ['a', 'b', 'c', 'd']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |