我一直试图从文件中拆分行,并将拆分数据保存到变量中但没有成功。
我的代码现在是这样的:
cur = db.cursor()
query = """INSERT INTO xxxx (var1, var2) VALUES (%s, %s)"""
with open('data.txt') as f:
da = f.readlines()
for line in da:
values = (v1,v2)
cur.execute(query,values)
但它并不像我想的那样工作。
我的请求是,如果您有任何人可以帮助我从data.txt
获取所需的值并保存到变量,以便能够将它们作为查询发送到数据库。
data.txt
现在有了这个:
0013a200419e323b <=>€#356894040#XBEE#0#STR:XBee frame#BAT:1#
0013a200419e323b <=>€#356894040#XBEE#0#STR:XBee frame#BAT:1#
所以var1
必须等于0013a200419e323b
和var2
到<=>€#356894040#XBEE#0#STR:XBee frame#BAT:1#
答案 0 :(得分:2)
你需要在空白处拆分一次:
with open('data.txt') as f:
for line in f: # can iterate over f, no need for readlines
values = line.split(None, 1) # splits on first whitespace only
cur.execute(query,values)
您将获得一个包含所需两个子字符串的列表:
In [13]: s="0013a200419e323b <=>€#356894040#XBEE#0#STR:XBee frame#BAT:1#"
In [14]: s.split(None,1)
Out[14]: ['0013a200419e323b', '<=>\xe2\x82\xac#356894040#XBEE#0#STR:XBee frame#BAT:1#']
In [15]: var1,var2 = s.split(None,1)
In [16]: var1
Out[16]: '0013a200419e323b'
In [17]: var2
Out[17]: '<=>\xe2\x82\xac#356894040#XBEE#0#STR:XBee frame#BAT:1#'