使用Python对MySql数据库中的数字范围进行分类

使用Python对MySql数据库中的数字范围进行分类,python,mysql,Python,Mysql,我在MySQL中有一个表,每个人都有一周的时间范围,它们看起来像 r = re.findall(r"[0-9]+,[0-9]+", line) 3-15,21-30,33-35 3-15 4-14 21-30,33-35 等等。我想把每个范围分开,把每个人分为几个学期,第一学期是3-19周,第二学期是20-35周。如果任何一个人的周数在3-15之间,属于第1学期,如果他们的周数在35之间,则属于这两个学期 我如何为此编写Python代码 到目前为止,我的代码只获得了前2个字符,以确定它是一个数

我在MySQL中有一个表,每个人都有一周的时间范围,它们看起来像

r = re.findall(r"[0-9]+,[0-9]+", line)
3-15,21-30,33-35

3-15

4-14

21-30,33-35

等等。我想把每个范围分开,把每个人分为几个学期,第一学期是3-19周,第二学期是20-35周。如果任何一个人的周数在3-15之间,属于第1学期,如果他们的周数在35之间,则属于这两个学期

我如何为此编写Python代码

到目前为止,我的代码只获得了前2个字符,以确定它是一个数字:

import sqlite3
import csv

conn = sqlite3.connect('RefinedDatabase.db')
cursor = conn.cursor()

selectRow = cursor.execute( "SELECT  Weeks FROM staffDataBase")
fetchrow = cursor.fetchone()

while fetchrow != None:

    fetchrow =  str(fetchrow).replace(',)','').replace('(','').replace('u\'','').replace("'","").replace('u"', '').replace('"','').replace(')','')
    if fetchrow[0:2].isdigit  :
        print fetchrow[0:2]
            
    fetchrow = cursor.fetchone()

conn.close()

print ("All Done!!")

如果你想处理字符串,你应该花点时间学习正则表达式!起初它们有点吓人,但它们是一个不可思议的工具

看看

要获得您的产品线中的所有范围,您可以执行以下操作

r = re.findall(r"[0-9]+,[0-9]+", line)
你会得到

>>> line = "(3-15,21-30,33-35)"
>>> r = re.findall(r"([0-9]+)\-([0-9]+)", line)
>>> r
[('3', '15'), ('21', '30'), ('33', '35')]
您可以测试正则表达式并学习“live”: 特别是对于python测试:


注意:如果文件中有额外的字符,例如空格,则可能需要使表达式稍微复杂一些才能解释这些字符。检查\s模式。

谢谢。。我会试试看:@HimaBhamidipati:如果你喜欢,记得接受答案。单击“v”让其他人知道问题已经回答。我尝试了以下代码,但它只打印出特定数量的行,并给出以下错误:索引器:列表索引超出范围。我有以下代码:selectRow=cursor.execute SELECT Weeks FROM staffDataBase fetchrow=cursor.fetchone while fetchrow!=无:fetchrow=strfetchrow.replace'、.replace、.replace'u'、.replace'u'、.replace'、.replace.replace,line=fetchrow line=re.findallr[0-9]+\-[0-9]+,line print line[0]fetchrow=cursor.fetchone我想我知道这个问题,但我该如何纠正它呢??我有几个条目,其中单元格中只有一个数字。当我运行上面的代码时,我只得到一个空数组,因为没有“-”来分隔数字。首先,你应该编辑你的原始问题,而不是在你的评论中添加代码。那简直是不可读!然后,您没有实现我向您提出的代码,它没有单个数字的问题。包含所有“replace”函数调用的代码过于死板,无法使用。