掘金 人工智能 05月16日 14:03
Python格式化输出查询参数(Query Parameters)
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

该Python程序旨在更清晰地查看Android开发中HTTP请求的Query Parameters参数值传递问题。它通过接收HTTP GET参数字符串,利用`urllib.parse`解析参数,并将其格式化为易于阅读的表格。程序能够处理包含中文的参数,并通过计算字符串的显示宽度来确保表格对齐。用户可以通过命令行参数或直接输入参数字符串来运行程序,最终在控制台输出格式化的参数表格,方便开发者调试和分析HTTP请求。

🛠️程序主要功能是解析HTTP GET请求中的参数字符串,并将其转换为易于阅读的表格形式,方便开发者调试和分析。

🧮程序使用`urllib.parse.parse_qsl`函数来解析HTTP GET参数字符串,并使用`keep_blank_values=True`保留空值。

📏程序通过`get_string_width`函数计算字符串的显示宽度,中文字符计为2个宽度,从而解决对齐问题,确保表格美观。

⌨️程序支持通过命令行参数或用户输入来获取HTTP GET参数字符串,提供了灵活的使用方式。

功能介绍

实际是Anroid开发中,想要更清晰查看Http请求中Query Parameters的参数值传递是否有问题,又同时在学习python语言,完成一段Python小程序

实现效果

具体代码实现

import urllib.parseimport sysfrom typing import Dict, Listimport unicodedatadef get_string_width(s: str) -> int:    """    计算字符串的显示宽度,中文字符计为2个宽度,解决对齐问题        参数:        s (str): 要计算宽度的字符串        返回:        int: 字符串的显示宽度    """    width = 0    for char in s:        # 获取字符的东亚宽度属性        if unicodedata.east_asian_width(char) in ('F', 'W', 'A'):            width += 2        else:            width += 1    return widthdef format_cell(content: str, width: int) -> str:    """    格式化表格单元格,确保对齐        参数:        content: 单元格内容        width: 需要的宽度        返回:        str: 格式化后的单元格内容    """    content_width = get_string_width(content)    padding = width - content_width    if padding < 0:        padding = 0    content_bytes = content.encode('utf-8')    content_display = content_bytes.decode('utf-8')    return f" {content_display}{' ' * padding} "def parse_http_get_params(query_string):    """    解析HTTP GET参数字符串,返回参数字典        参数:        query_string (str): HTTP GET参数字符串,例如 'param1=value1&param2=value2'        返回:        dict: 参数名称和值的字典    """    # 移除可能存在的问号前缀    if '?' in query_string:        query_string = query_string.split('?', 1)[1]        # 使用urllib.parse解析参数,保留空值    params_dict = dict(urllib.parse.parse_qsl(query_string, keep_blank_values=True))    return params_dictdef format_params_table(params_dict: Dict[str, str]) -> List[List[str]]:    """    将参数字典转换为表格数据        参数:        params_dict (dict): 参数名称和值的字典        返回:        list: 包含参数名和参数值的二维列表    """    # 转换为表格数据结构    table_data = [['参数名', '参数值']]  # 表头    table_data.extend([[key, str(value)] for key, value in params_dict.items()])    return table_datadef print_table(table_data: List[List[str]]) -> None:    """    打印格式化的表格        参数:        table_data: 要打印的表格数据    """    # 计算每列的最大显示宽度    col_widths = []    for i in range(len(table_data[0])):        max_width = 0        for row in table_data:            width = get_string_width(str(row[i]))            max_width = max(max_width, width)        col_widths.append(max_width)        # 生成分隔线    separator = '+'    for width in col_widths:        separator += '-' * (width + 2) + '+'        # 打印表头    print(separator)    header_cells = [format_cell(col, width) for col, width in zip(table_data[0], col_widths)]    print('|' + '|'.join(header_cells) + '|')    print(separator)        # 打印数据行    for row in table_data[1:]:        cells = [format_cell(str(cell), width) for cell, width in zip(row, col_widths)]        print('|' + '|'.join(cells) + '|')    print(separator)def main():    # 检查是否提供了命令行参数    if len(sys.argv) > 1:        query_string = sys.argv[1]    else:        # 如果没有命令行参数,提示用户输入        query_string = input("请输入HTTP 参数字符串: ")        # 解析参数    params_dict = parse_http_get_params(query_string)    # 转换为表格数据    table_data = format_params_table(params_dict)        print("\nHTTP参数表格:")    print_table(table_data)if __name__ == "__main__":    main()

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Python HTTP GET参数 Android开发 参数解析 表格格式化
相关文章