You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Robot Framework将文件内容转换为字典列表

解决Robot Framework生成字典列表的问题

你现在的核心问题是没有将每次生成的字典收集到一个统一列表中,而且循环外创建的字典会被反复覆盖,最终只能输出三个独立的字典。咱们调整一下关键字的代码就能实现你要的字典列表效果:

修改后的完整代码

*** Settings ***
Library OperatingSystem
Library String
Library Collections
Library utils.py

*** Variables ***
${file_path}= Samplefile.txt
@{sample_list}= 900982283

*** Test Cases ***
Check given ID is not present in the text file
    Search for ID in the text file
    # Given ID should not be found in the file

*** Keywords ***
Search for ID in the text file
    # 初始化一个空列表,用来存放所有行对应的字典
    @{dict_list}= Create List
    ${file}= Get file ${file_path}
    @{lines_in_file}= Split to lines ${file}
    # 处理表头,添加strip=True可去除多余空格和空元素(可选)
    ${line0}= Split String ${lines_in_file}[0] | strip=True
    Remove From List ${lines_in_file} 0
    FOR ${lines} IN @{lines_in_file}
        # 每次循环创建新字典,避免覆盖之前的行数据
        &{myDict}= Create Dictionary
        ${line}= Split String ${lines} | strip=True
        # 用Zip关键字配对表头和行数据,替代嵌套循环更简洁
        @{key_value_pairs}= Zip ${line0} ${line}
        FOR ${pair} IN @{key_value_pairs}
            Set To Dictionary ${myDict} ${pair[0]}=${pair[1]}
        END
        # 将当前行的字典加入到列表中
        Append To List ${dict_list} ${myDict}
    END
    # 输出最终的字典列表
    Log To Console ${dict_list}

关键改动说明

  • 新增列表容器:开头创建@{dict_list}作为所有字典的统一存储容器,这是实现字典列表的核心。
  • 循环内创建新字典:把&{myDict}= Create Dictionary移到FOR循环内部,确保每一行数据对应一个全新的字典,不会被上一行的数据覆盖。
  • 简化键值配对:用Zip关键字把表头和每行数据一一配对,替代原来的嵌套循环,代码更简洁易维护。
  • 收集字典到列表:每次生成完一行对应的字典后,用Append To List把它加入到dict_list中。
  • 可选优化Split String时加上strip=True,可以去掉分割后元素的前后空格,同时过滤掉因行首/行尾的|产生的空字符串(如果你不想保留{'': ''}这个键值对的话)。

这样修改后,你就能得到期望的字典列表输出了!

内容的提问来源于stack exchange,提问作者Indrus22

火山引擎 最新活动