用新行字符连接要作为CL-argumen传递的列表

2024-05-14 14:01:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在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']

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


Tags: of字符串列表参数clnewline字符ss
3条回答

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

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

如果您实际上不希望制表符和换行符作为参数传递给其他系统,那么您可能应该使用原始字符串(r"\n\twith")来防止所有代码被解释为转义代码。在

不需要进行数据转换,而这些数据转换并不是你要撤销的。在

给定第一个代码中的ss

print ss.encode("string_escape")

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

相关问题 更多 >

    热门问题