首页 > 解决方案 > 如何在 Robot Framework 中将单引号( ' )替换为双引号( " )?

问题描述

我有一个列表,项目是通过循环附加创建的。我想将此列表用作json。问题是该列表中的项目使用单引号,因此它不能是 json。

Get Order Items
    [Tags]    Get Order Items
    Set Headers    ${HEADER CUSTOMER}
    GET            ${ORDER GET BY CODE ENDPOINT}/${ORDER CODE}
    Integer        response status    200
    ${NUMBER OF ITEMS}    Output     $.number_of_items
    ${NUMBER OF ITEMS}    Evaluate  ${NUMBER OF ITEMS} + 1
    ${ORDER ITEMS}     Create List    
    :FOR    ${i}    IN RANGE  1  ${NUMBER OF ITEMS}
    \    Append To List    ${ORDER ITEMS}    ${ORDER CODE}${i}  
    Set Global Variable    ${ORDER ITEMS}

实际结果:['N19072596HB1', 'N19072596HB2', 'N19072596HB3', 'N19072596HB4', 'N19072596HB5']

预期结果:[“N19072596HB1”、“N19072596HB2”、“N19072596HB3”、“N19072596HB4”、“N19072596HB5”]

标签: robotframework

解决方案


这: ['N19072596HB1', 'N19072596HB2', 'N19072596HB3', 'N19072596HB4', 'N19072596HB5'] 是python的列表字符串表示,他们选择使用单引号。

由于您的最终目标是在 json 中使用双引号版本,因此最好的办法是使用 python 的json库为您转换它,而不是用双引号替换单引号:

${list as string}=    Evaluate    json.dumps($ORDER_ITEMS)    json

(注意变量没有被大括号包围 - 因此您将实际变量传递给方法,而不是它的值)

为什么不使用简单的字符串替换?
因为您不想处理列表成员可能有单引号或双引号的情况 - 例如 ['N19072596HB1', "N1907'2596HB2", 'N19072596HB1', 'N19072"596HB2']。
一个简单的字符串替换将惨遭失败,而该json库旨在按预期处理这些情况。


推荐阅读