如何在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"
]