如何在Python中附加两个字符串?

时间:2009-06-29 15:22:33

标签: python string

我已经完成了数百万次此操作,只需使用+运算符!我不知道为什么它这次不工作,它用新的覆盖了字符串的第一部分!我有一个字符串列表,只想在一个字符串中连接它们!如果我从Eclipse运行该程序,它从命令行运行,它没有! 清单是:

["UNH+1+XYZ:08:2:1A+%CONVID%'&\r", "ORG+1A+77499505:ABC+++A+FR:EUR++123+1A'&\r", "DUM'&\r"]

我想丢弃第一个和最后一个元素,代码是:

        ediMsg = ""
        count = 1
        print "extract_the_info, lineList ",lineList
        print "extract_the_info, len(lineList) ",len(lineList)
        while (count < (len(lineList)-1)):
            temp = ""
#            ediMsg = ediMsg+str(lineList[count])
#            print "Count "+str(count)+" ediMsg ",ediMsg 
            print "line value : ",lineList[count]
            temp = lineList[count]
            ediMsg += " "+temp
            print "ediMsg     : ",ediMsg
            count += 1
            print "count ",count

查看输出:

extract_the_info, lineList  ["UNH+1+XYZ:08:2:1A+%CONVID%'&\r", "ORG+1A+77499505:ABC+++A+FR:EUR++123+1A'&\r", "DUM'&\r"]
extract_the_info, len(lineList)  8
line value :  ORG+1A+77499505:ABC+++A+FR:EUR++123+1A'&
ediMsg     :  ORG+1A+77499505:ABC+++A+FR:EUR++123+1A'&
count  2

line value :  DUM'&
 DUM'&     :  ORG+1A+77499505:ABC+++A+FR:EUR++123+1A'&
count  3

为什么会这样做??

6 个答案:

答案 0 :(得分:32)

虽然两个答案都是正确的(使用“”.join()),但你的问题(除了非常丑陋的python代码)是这样的:

你的字符串以“\ r”结尾,这是一个回车符。一切都很好,但是当你打印到控制台时,“\ r”将从同一行的开始继续打印,因此覆盖到目前为止在该行上写的内容。

答案 1 :(得分:21)

你应该使用以下内容而忘记这个噩梦:

''.join(list_of_strings)

答案 2 :(得分:11)

问题不在于字符串的连接(尽管可能会使用一些清理),但在打印时。字符串中的\ r \ n具有特殊含义,将覆盖以前打印的字符串。

使用repr(),如下:

...
print "line value : ", repr(lineList[count])
temp = lineList[count]
ediMsg += " "+temp
print "ediMsg     : ", repr(ediMsg)
...

打印出你的结果,这将确保任何特殊字符不会弄乱输出。

答案 3 :(得分:8)

'\ r'是回车符。当你打印出一个字符串时,'\ r'将导致下一个字符出现在行的开头。

改变这个:

print "ediMsg     : ",ediMsg

为:

print "ediMsg     : ",repr(ediMsg)

您将看到嵌入的\r值。

当您的代码有效时,将其更改为单行代码:

ediMsg = ' '.join(lineList[1:-1])

答案 4 :(得分:7)

您的问题 打印,不是字符串操作。尝试使用'\ n'作为最后一个字符而不是'\ r'在每个字符串中:

lineList = [
    "UNH+1+TCCARQ:08:2:1A+%CONVID%'&\r",
    "ORG+1A+77499505:PARAF0103+++A+FR:EUR++11730788+1A'&\r",
    "DUM'&\r",
    "FPT+CC::::::::N'&\r",
    "CCD+CA:5132839000000027:0450'&\r",
    "CPY+++AF'&\r",
    "MON+712:1.00:EUR'&\r",
    "UNT+8+1'\r"
]

答案 5 :(得分:5)

我只是快速看一下。当您打印文本时,似乎出现了问题。我很长时间没有做过这样的事情,但是你可能只在打印时得到最后一行。如果你检查实际变量,我相信你会发现值是正确的。

到最后一行,我说的是你在文本字符串中得到的\。

相关问题