python字符串变量_Python从变量读取的特殊字符切分字符串问题

数据库中使用VARCHAR类型存储分隔符,分隔符有很多种,用户自已输入的,比如逗号、TAB(\t)、^A(\001)等等。

Python从数据库中读取分隔符,然后对对应的文本进行切分。普通字符没有问题,对于特殊字符,则需要进行处理之后才能正确切分。

20160929-3.jpg

每个ID对应的分隔符,需要从数据库中读取。

import MySQLdb

from ast import literal_eval

db = MySQLdb.connect("localhost","user","password","mydb",use_unicode=True)

cursor = db.cursor()

cursor.execute("SELECT sep FROM lxw1 WHERE id = 1")

results = cursor.fetchall()

a=''

for row in results:

a = row[0]

db.close()

print(a,type(a))

##output: \001

print(a=="\001")

##output: False

print(a=="\\001")

##output: True

##从数据库中读取出来的其实是加了转义符的

str="a\001b\001c\001d"

print(str.split(a))

##直接用a,也就是"\\001"切分,显然结果不对

##output: ['a\x01b\x01c\x01d']

print(str.split("\001"))

##用"\001"切分,结果正常

##output: ['a', 'b', 'c', 'd']

## 那么,现在的问题其实是需要把加了转义符的"\\001",转换成正确的特殊字符"\001"

b = literal_eval("'%s'" % a)

print(b,type(b))

##output:

print(b=="\001")

##output: True

print(str.split(b))

##output: ['a', 'b', 'c', 'd']

c = "\\t"

##对于TAB分隔符,也是如此,从数据库中读出来,其实是"\\t"

str2 = "1 2 3 4"

print(str2.split(c))

##output: ['1\t2\t3\t4']

print(str2.split(literal_eval("'%s'" % c)))

##output: ['1', '2', '3', '4']

d = ","

str3 = "x,y,z"

print(str3.split(literal_eval("'%s'" % d)))

##output: ['x', 'y', 'z']

Mark一下。

如果觉得本博客对您有帮助,请 赞助作者 。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值