Python 中的字符串数组连接问题:Str(ArrayOfString[1])+" "+Str(ArrayOfString[2]) 似乎不起作用
Concatenation of strings array issues in Python: Str(ArrayOfString[1])+" "+Str(ArrayOfString[2]) doesn't seem to work
您好,我的 python 脚本有问题,我无法将 2 个字符串数组串联起来 returns-
SyntaxError: can't assign to function call
这是我的脚本:
import os, sys, MySQLdb
# connecting to a database
db = MySQLdb.connect(host="localhost", user="MyUser", passwd="MyPassword",db="MyDB")
cursor = db.cursor()
cursor.execute("SELECT * FROM MyTable")
db.commit()
# get the number of rows in the resultset
numrows = int(cursor.rowcount)
# Opening a file to write in it a script
fname = os.path.normpath("C:\Users\Me\Desktop\MyScript.cmd")
f = open(fname, "w")
# get and display one row at a time.
for x in range(0,numrows):
row = cursor.fetchone()
print row[1], "-->", row[2]
这是我想做的;使 row[1] 字符串不超过 16 个字符
如果是,则将其放在行[2] 的开头并将行[1] 切片为16 个字符
这是我第一次尝试做的事情 -
#if len(str(row[1])>=16:
# str(row[2])=str(row[1])+" "+str(row[2])
# str(row[1])=str(row[1][0:14])
但是现在不行了,我尝试不测试字符串长度,直接把行[1]放在行[2]中,不管行[1]有多长
str(row[2])=str(row[1])+" "+str(row[2])
str(row[1])=str(row[1])[:16]
f.write("vtaddapp /Nom=test/%s /Comm=\"%s\"\n" % (str(row[1]), str(row[2])))
f.close()
我正在使用 python 2.7 并使用 Windows OS
只需将您的第一次尝试更改为以下内容:
if len(str(row[1])) >= 16:
row[2] = str(row[1])+" "+str(row[2])
row[1] = str(row[1][0:16])
我的回答自由改编自@phylogenesis 的评论。
更新:
上面的答案不会起作用,因为行是一个元组,因此它是不可变的。您需要将 1 和 2 的值分配给其他一些变量,并在进一步处理中使用它们。
if len(str(row[1])) >= 16:
temp2 = str(row[1])+" "+str(row[2])
temp1 = str(row[1][0:16])
else:
temp2 = str(row[2])
temp1 = str(row[1])
一个简单的方法是:
temp2, temp1 = str(row[1])+" "+str(row[2]), str(row[1][0:16]) if len(str(row[1])) >= 16 else str(row[2]), str(row[2])
您好,我的 python 脚本有问题,我无法将 2 个字符串数组串联起来 returns-
SyntaxError: can't assign to function call
这是我的脚本:
import os, sys, MySQLdb
# connecting to a database
db = MySQLdb.connect(host="localhost", user="MyUser", passwd="MyPassword",db="MyDB")
cursor = db.cursor()
cursor.execute("SELECT * FROM MyTable")
db.commit()
# get the number of rows in the resultset
numrows = int(cursor.rowcount)
# Opening a file to write in it a script
fname = os.path.normpath("C:\Users\Me\Desktop\MyScript.cmd")
f = open(fname, "w")
# get and display one row at a time.
for x in range(0,numrows):
row = cursor.fetchone()
print row[1], "-->", row[2]
这是我想做的;使 row[1] 字符串不超过 16 个字符 如果是,则将其放在行[2] 的开头并将行[1] 切片为16 个字符
这是我第一次尝试做的事情 -
#if len(str(row[1])>=16:
# str(row[2])=str(row[1])+" "+str(row[2])
# str(row[1])=str(row[1][0:14])
但是现在不行了,我尝试不测试字符串长度,直接把行[1]放在行[2]中,不管行[1]有多长
str(row[2])=str(row[1])+" "+str(row[2])
str(row[1])=str(row[1])[:16]
f.write("vtaddapp /Nom=test/%s /Comm=\"%s\"\n" % (str(row[1]), str(row[2])))
f.close()
我正在使用 python 2.7 并使用 Windows OS
只需将您的第一次尝试更改为以下内容:
if len(str(row[1])) >= 16:
row[2] = str(row[1])+" "+str(row[2])
row[1] = str(row[1][0:16])
我的回答自由改编自@phylogenesis 的评论。
更新: 上面的答案不会起作用,因为行是一个元组,因此它是不可变的。您需要将 1 和 2 的值分配给其他一些变量,并在进一步处理中使用它们。
if len(str(row[1])) >= 16:
temp2 = str(row[1])+" "+str(row[2])
temp1 = str(row[1][0:16])
else:
temp2 = str(row[2])
temp1 = str(row[1])
一个简单的方法是:
temp2, temp1 = str(row[1])+" "+str(row[2]), str(row[1][0:16]) if len(str(row[1])) >= 16 else str(row[2]), str(row[2])