加入一个带有换行符的列表,作为CL参数传递



我正在尝试加入python中的一个列表,该列表包含多个字符串,其中一些字符串中包含\t和\n字符以创建字符串。

假设我的列表如下:

ll = ['list', 'of', 'tstrings', 'ntwith', 'newline', 'tcharacters']
ss = ':::'.join(ll)
print ss

使用格式化的字符打印ss:

list:::of:::    strings:::
with:::newline:::  characters

而我想打印的是:

'list:::of:::tstrings:::ntwith:::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':::'ntwith':::'newline':::'tcharacters'

我又尝试了一些技巧,但似乎没有一个能满足我的需要。

我之所以需要它,就像上面一样,是因为我正在为稍后在另一台机器上调用的脚本编写CL参数。将列表作为CL参数传递是行不通的,所以我打算将列表作为字符串(由":::"连接)传递,然后在另一张幻灯片上,使用"::"将其拆分回列表。当只在原始列表上使用join和split时,这是有效的,但是当我使用硬编码的CL参数调用python脚本时会抛出一个错误,因为在列表转换的字符串参数中有换行符。最后一个例子在传递到第二台机器时有效,但当我将其拆分时,它给了我这个列表:

["'list'", "'of'", "'\tstrings'", "'\n\twith'", "'newline'", "'\tcharacters'"]

我需要什么时候:

['list', 'of', 'tstrings', 'ntwith', 'newline', 'tcharacters']

更新:我尝试了下面的所有建议和更多建议,但仍然无法解决,所以现在我只是将列表转储到第一台服务器上的一个文本文件中,传递文件名而不是列表,然后将文本文件读取到第二台服务器的列表中。希望这个变通办法能奏效,但我仍在寻找更好的方法。

连接的字符串已经符合您的要求。您可以通过打印其表示形式来确认:

ll = ['list', 'of', 'tstrings', 'ntwith', 'newline', 'tcharacters']
ss = ':::'.join(ll)
print repr(ss)
# 'list:::of:::tstrings:::ntwith:::newline:::tcharacters'

给定第一个代码中的ss

print ss.encode("string_escape")

(或者可能是"unicode_escape",如果有任何可能的非ASCII字符)

如果除了将制表符和换行符作为参数传递给其他系统之外,您实际上不想要其他任何东西,那么您可能应该使用原始字符串(r"ntwith")来防止所有代码被解释为转义码。

不需要进行数据转换,这些转换没有任何目的,您只需撤消即可。

最新更新