model.py 文件源码

python
阅读 40 收藏 0 点赞 0 评论 0

项目:well-being-diary 作者: SunyataZero 项目源码 文件源码
def get_all_tags_or_friends(i_special_char_str: str) -> list:
        ret_tag_tuple_list_list = []
        # ret_tag_tuple_list_list: [("#tag1", [id1, id2, ___]), ("#tag2", [id1, id3, ___]), ___]
        db_connection = DbHelperM.get_db_connection()
        db_cursor = db_connection.cursor()
        db_cursor_result = db_cursor.execute(
            "SELECT * FROM " + DbSchemaM.DiaryEntryTable.name
            + " WHERE " + DbSchemaM.DiaryEntryTable.Cols.diary_entry
            + " LIKE " + '"%' + i_special_char_str + '%"'
        )
        # -http://sqlite.org/lang_expr.html#like
        diary_db_te_list = db_cursor_result.fetchall()
        for diary_db_te in diary_db_te_list:
            diary_entry = DiaryEntryM(*diary_db_te)
            string_with_hashtag_str = diary_entry.diary_text
            t_diary_id_int = diary_entry.id
            regexp_pattern_obj = re.compile("\\" + i_special_char_str + r"\w+")
            # Please note: we need to escape the caret ("^") character becase this is a
            # special character ("literal")
            regexp_search_result_list = regexp_pattern_obj.findall(string_with_hashtag_str)
            # https://docs.python.org/3/library/re.html

            for t_re_tag_str in regexp_search_result_list:
                # -regexp_search_result_list: ["#tag1", "#tag2", ___]
                flag_boolean = False
                for (t_ret_tag_str, t_ret_diary_id_list) in ret_tag_tuple_list_list:
                    if t_re_tag_str == t_ret_tag_str:
                        t_ret_diary_id_list.append(t_diary_id_int)
                        flag_boolean = True
                        break
                if flag_boolean:
                    break
                else:
                    ret_tag_tuple_list_list.append((t_re_tag_str, [t_diary_id_int]))

        db_connection.commit()

        # TODO: Removing duplicates

        return ret_tag_tuple_list_list
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号