在sqlite数据库中使用python进行字符串拆分和格式化

时间:2017-01-26 19:37:48

标签: python sqlite split

我有一个SQLite数据库,其列的条目是以下形式的字符串“A-B-C”,其中A,B,C具有可变长度并由“ - ”字符分隔。

特别是,A应为1或2个字符,B 1-4个字符和C 1-5个字符,但由于某些未知原因,它们可能更长。

我尝试按以下方式拆分这些字符:

  • 我将拥有A子串
  • 的列
  • 另一个我有B子串
  • 的人
  • 最后一个我有C子串的地方。

然而,由于SQLite不支持字符串拆分,而且我使用substr()进行黑客攻击并且不同的定位导致了很多混乱。

我正在尝试在python中执行此操作。但是我对此很新,虽然我能够以这种方式连接到数据库并提交语句,但我不太确定如何去做我想要的事情。我看到了str.rsplit()函数,但我不确定如何在两种语言之间进行混合。

例如,我应该写

c = conn.execute(
       UPDATE database SET Column_1 = 
                 def First(
                    str.rsplit(Column), 1) 
                        SELECT Column FROM database )

First函数返回Column分割字符串的第一个值,依此类推Column_2Column_3

一旦我有了这个,我需要格式化column_1,column_2和column_3中的每一个,以便它们每个都至少有2个,4个和5个字符,每个字符在列的字符左边相邻的零点,具体取决于长度结果字符串。

编辑:

我在更新数据库方面遇到了一些问题:

以下产生第一个值:

with con: cur = con.cursor() cur.execute('SELECT Column1 FROM MainTable') row = cur.fetchone() for line in row: a, b, c= line.split('-') print (b);

使用以下方式稍作修改:

while True: cur.fetchone()== None then Break

产生所有值。 但是,我可以让它更新给定列Col2的数据库,因为它有很多与混合python和SQL相关的语法错误。

1 个答案:

答案 0 :(得分:1)

您可以使用split()方法拆分字符串:

data = [
    'ab-de-ghijk',
    'a-bcde-fghi',
]
for string in data:
    a, b, c = string.split('-')
    print(a, b, c)