如何用一个if语句计算多个变量

2024-06-16 10:26:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我当前正在存储由返回XML的API响应提供的值,某些节点返回时带有“false”或“true”,我将这些值捕获为字符串类型。你知道吗

XML代码:

<hidden>false</hidden>
<ssl>true</ssl>
<current_payout>true</current_payout>

我想通过这些值进行解析,如果找到匹配项,我想根据匹配的变量将“true”更改为“on”,将“false”更改为“off”。你知道吗

我只能用一个变量来实现这一点,我的目标是清理我的代码并找到一种更有效的方法,任何建议都将不胜感激。你知道吗

这是我的代码块:

import requests
import json
import csv
from bs4 import BeautifulSoup



for data in csv_reader:

req = requests.get(url, params=params)
response = BeautifulSoup(req.text, 'lxml')

hidden = response.find('hidden').string
ssl = response.find('ssl').string
currentPayout = response.find('current_payout').string

if hidden == 'true':
    hidden = 'on'
if hidden 'false':
    hidden = 'off'

if ssl == 'true':
    ssl = 'on'
if ssl = 'false':
    ssl = 'off'

if currentPayout == 'true':
    currentPayout = 'on'
if currentPayout = 'false':
    currentPayout = 'off'

问题:如何使用3if语句并合并代码?你知道吗


Tags: 代码importfalsetruesslstringifon
2条回答

这个怎么样:

response_map = {'true': 'on', 'false': 'off'}
find_terms = {'hidden', 'ssl', 'current_payout'}

result = {find_term: response_map[response.find(find_term)] for find_term in find_terms}

result['hidden']result['ssl']result['current_payout']将具有所需的值。你知道吗

gmds有一个很好的答案,但是如果你想让你的代码远离循环,你可以使用三元赋值来简化你现有的代码。你知道吗

ssl = 'on' if ssl == 'true' else 'off'
hidden = 'on' if hidden == 'true' else 'off'
currentPayout = 'on' if currentPayout == 'true' else 'off'

相关问题 更多 >