我试图在python中加入一个包含多个字符串的列表,其中一些字符串中包含\ t和\ n字符以创建字符串。
说我的列表如下:
ll = ['list', 'of', '\tstrings', '\n\twith', 'newline', '\tcharacters']
ss = ':::'.join(ll)
print ss
打印带有\ n和\ t字符格式的ss:
list:::of::: strings:::
with:::newline::: characters\
虽然我想要打印的是:
'list:::of:::\tstrings:::\n\twith:::newline:::\tcharacters'
我试过了:
ss =[]
for l in ll:
ss.append(repr(l))
ss = ':::'.join(ll)
与上面的内容相同
和
ss = ''
for l in ll:
ss += (repr(l)) + ':::'
print ss.strip(':::')
这是关闭但打印:
'list':::'of':::'\tstrings':::'\n\twith':::'newline':::'\tcharacters'
尝试了几次黑客攻击,但似乎没有人能得到我所需要的东西。
我之所以需要它的原因是因为我正在将CL参数写入我稍后在另一台机器上调用的脚本。将列表作为CL参数传递并不起作用,因此我将列表作为字符串传递(由' :::'加入),然后在另一张幻灯片上将其拆分为使用' :::'的列表。这只适用于在原始列表中使用join和split,但是当我使用硬编码的CL参数调用python脚本时会抛出错误,因为列表转换的字符串参数中有换行符。最后一个例子在传递给第二台机器时有效,但是当我把它拆分回来时给我这个列表:
["'list'", "'of'", "'\\tstrings'", "'\\n\\twith'", "'newline'", "'\\tcharacters'"]
而我需要:
['list', 'of', '\tstrings', '\n\twith', 'newline', '\tcharacters']
更新:我尝试了下面的所有建议,但仍然无法弄清楚,所以现在我只是将列表转储到文本文件中第一个服务器,传递文件名而不是列表,然后将文本文件读取到第二个服务器上的列表。希望这种解决方法能够奏效,但我仍然在寻找更好的方法。
答案 0 :(得分:1)
已加入字符串已经是您想要的。您可以通过打印其表示来确认:
ll = ['list', 'of', '\tstrings', '\n\twith', 'newline', '\tcharacters']
ss = ':::'.join(ll)
print repr(ss)
# 'list:::of:::\tstrings:::\n\twith:::newline:::\tcharacters'
答案 1 :(得分:1)
在第一个代码中给出ss
:
print ss.encode("string_escape")
(如果有任何可能的非ASCII字符,可能是“unicode_escape”)
答案 2 :(得分:0)
如果你实际上并不想要除了作为参数传递给其他系统之外的任何选项卡和换行符,你应该使用原始字符串(r"\n\twith"
)来保持所有代码不被解释为转义码。
无需进行数据转换,而这些转换的目的不是您要撤消的。