2014-12-19 46 views
0

我已经尝试了这几种不同的方式,并且我不确定它为什么不起作用,o.value =测试此代码。在Python中连接三个字符串

for o in myParameterFile.parameter_list: 
    if o.parameter == 'unique_project_name': 
     lsfName = 'dip3d_' + o.value + '.bsub' 
      print lsfName 

输出: .bsub_test

预期输出: dip3d_test.bsub

所以它的覆盖串dip3d_的初始部分与.bsub 我也曾尝试把字符串列表,并使用''.join()结果相同。

我使用python 2.7

+7

此代码无法生成此输出。您发布的输出必须来自程序的其他部分。 – yole

+0

脚本的其余部分在哪里?您的输出不是由这部分代码生成的。你确定'o.parameter'是正确的吗? – birryree

+0

发布包含'myParameterFile'的第一部分。如果'o.value'是''test'',则输出应该是预期的输出。 –

回答

2

在一个粗略的估计,该字符串o.value包含一个回车符,和当您打印它时,您将覆盖文字dip3d

+0

听起来正确。用'print''.join确认('%02X'%ord(ch)for ch in o.value)'并在输出中查找'0D'(回车的十六进制代码)。 – jez

0

没有足够的背景下说为什么它这样做,但你可以尝试

lsfName = 'dip3d_{0}.bsub'.format(o.value) 
0

正是在这种被包括回车“\ r”字符解析器错误。

else: 
     if char != '=' and char != '\n' and char != '\"' and != '\r': 
      valueName.append(char) 

解决了这一问题。这是一个愚蠢的错误。我需要修改他们的解析器来忽略其他一些东西。