2014-12-19 74 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) 

解決了這一問題。這是一個愚蠢的錯誤。我需要修改他們的解析器來忽略其他一些東西。