Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中附加两个字符串?_Python_String - Fatal编程技术网

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

如何在Python中附加两个字符串?,python,string,Python,String,我已经使用+操作符完成了数百万次此操作!我不知道为什么这次它不工作,它正在用新的覆盖字符串的第一部分!我有一个字符串列表,只想将它们连接在一个字符串中!如果我从Eclipse运行程序,它可以工作,但从命令行它不能! 名单如下: ["UNH+1+XYZ:08:2:1A+%CONVID%'&\r", "ORG+1A+77499505:ABC+++A+FR:EUR++123+1A'&\r", "DUM'&\r"] 我想丢弃第一个和最后一个元素,代码是: edi

我已经使用
+
操作符完成了数百万次此操作!我不知道为什么这次它不工作,它正在用新的覆盖字符串的第一部分!我有一个字符串列表,只想将它们连接在一个字符串中!如果我从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

它为什么这样做

你应该使用以下方法,忘掉这个噩梦:

''.join(list_of_strings)

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


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

虽然这两个答案是正确的(使用“.join()),但您的问题(除了非常难看的python代码)是:


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

问题不在于字符串的串联(尽管这可能需要一些清理),而在于打印。字符串中的\r具有特殊含义,将覆盖以前打印的字符串

使用repr(),例如:

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

要打印结果,这将确保任何特殊字符不会干扰输出。

“\r”是回车符。打印字符串时,'\r'将导致下一个字符出现在行首

更改此项:

print "ediMsg     : ",ediMsg
致:

您将看到嵌入的
\r

当代码运行时,请将其更改为一行:

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

您的问题是打印,而不是字符串操作。请尝试将“\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"
]

我的眼睛。。。。角色被烧掉了!这可能是我见过的python中最糟糕的字符串连接。那么???有什么建议吗?您可能还想看看Python中的for循环。计数时无需进行此操作。完全相同的问题:code:ediMsg=''。join(lineList[1:len(lineList)-1])输出:MON+712:1.00:EUR'&00027:0450'&FR:EUR++11730788+1A'&ediMsg=“”。join(lineList[1:])将除第一个元素之外的所有元素连接到一个字符串中。-1。答案并没有解决真正的问题:使用\r而不是\n他的问题是他看到了打印在标准输出上的结果,\r并且没有意识到发生了什么。需要告诉他这一点。@JohnMachin是对的。这个答案给出了一些可能有用的建议,但没有解决实际问题。它不应该被接受。这假设他可以更改字符串,并且它将传递到下一个系统,\r不是必需的。我从来不知道回车是如何工作的,谢谢提示。
ediMsg = ' '.join(lineList[1:-1])
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"
]