我尝试在python中加入一个包含多个字符串的列表,其中一些字符串中包含\t和\n字符来创建字符串。在
假设我的列表如下所示:
ll = ['list', 'of', '\tstrings', '\n\twith', 'newline', '\tcharacters']
ss = ':::'.join(ll)
print ss
打印带有字符格式的\n和\t ss:
^{pr2}$我想打印的是:
'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-tured-string参数中有新行。最后一个示例在传递到第二台计算机时起作用,但是在我将其拆分回来时会给出以下列表:
["'list'", "'of'", "'\\tstrings'", "'\\n\\twith'", "'newline'", "'\\tcharacters'"]
当我需要:
['list', 'of', '\tstrings', '\n\twith', 'newline', '\tcharacters']
更新:我尝试了下面的所有建议,但仍然没有找到答案,所以现在我只是将列表转储到第一台服务器上的一个文本文件中,传递文件名而不是列表,然后将文本文件读到第二台服务器上的列表中。希望这个解决办法会奏效,但我仍在寻找更好的方法建议。在
连接的字符串已经如您所愿。您可以通过打印其表示形式来确认:
如果您实际上不希望制表符和换行符作为参数传递给其他系统,那么您可能应该使用原始字符串(
r"\n\twith"
)来防止所有代码被解释为转义代码。在不需要进行数据转换,而这些数据转换并不是你要撤销的。在
给定第一个代码中的
ss
:(或者可能是“unicode_escape”,如果有任何可能的非ASCII字符)
相关问题 更多 >
编程相关推荐