如何在单行代码中删除 python 3 中类列表中的 [ , ] 和单引号? [关闭]

Posted

技术标签:

【中文标题】如何在单行代码中删除 python 3 中类列表中的 [ , ] 和单引号? [关闭]【英文标题】:how to remove [ , ] and single quote in class list in python 3 in single line of code? [closed] 【发布时间】:2020-12-29 03:18:02 【问题描述】:

我有一个列表输入,我想要 O/p(单行代码)我已经尝试了下面的代码,但我没有得到想要的输出。在这个我想删除 [,] 和单引号,这里bid_data 类型是<class 'list'> 输入 ['Quantity Required', ' 1'] O/p 1 我尝试过的代码

   def scrap_bid_data():
    page_no = 1
    while page_no < 2:
        print('Hold on creating URL to fetch data...')
        url = 'https://bidplus.gem.gov.in/bidlists?bidlists&page_no=' + str(page_no)
        print('URL created: ' + url)
        scraped_data = requests.get(url, verify=False)
        soup_data = bs(scraped_data.text, 'lxml')
        extracted_data = soup_data.find('div', 'id': 'pagi_content')
        if len(extracted_data) == 0:
            break
        else:
            for idx in range(len(extracted_data)):
                if (idx % 2 == 1):
                    bid_data = extracted_data.contents[idx].text.strip().split('\n')

                    bidno = bid_data[0].split(":")[-1]
                    items = bid_data[5].split(":")[-1]
                    qnty = int(bid_data[6][1].strip())
                    dept = (bid_data[10] + bid_data[12].strip()).split(":")[-1]
                    edate = bid_data[17].split("End Date:")[-1]
                    f.writerow([bidno, items, qnty.split(":"), dept, edate])

            page_no=page_no+1
scrap_bid_data()

['BID NO: GEM/2020/B/756203', 'View Corrigendum', '', '', '', 'Item(s): Desktop Computers', 'Quantity Required: 35', '', '', '', 'Department Name And Address:', '', ' Ministry Of Electronics And Information Technology Na Hq, New Delhi Unique Identification Authority Of India (uidai) ', '', '', '', 'Start Date: 19-08-2020 05:33 PM', 'End Date: 10-09-2020 04:00 PM']

但是通过这个我得到['1'] 需要 Python 编码新手的帮助。

【问题讨论】:

什么,确切是您的意见?请提供minimal reproducible example。 你有一个字符串输入是什么意思? ['Quantity Required', ' 1'] 是一个列表。您的意思是您的输入是一个 Stringified 列表吗?那你为什么要在":" 分裂你实际上在哪里看到的?请更清楚 仍然没有提供minimal reproducible example。请写一段完整的代码,我们可以复制粘贴并重现您的输出。 @SMG reproducible example = 复制粘贴您的代码,运行它并重现您的问题。如果您的问题是NameError: name 'bid_data' is not defined,则可以,但根据描述,问题有所不同 那仍然不是minimal reproducible example。 请实际阅读该链接并按照说明进行操作 【参考方案1】:

根据您对 bid_data 所含内容的更新:

做:

int(bid_data[6].split(':')[1].strip()) # returns an integer

解释:

Python 字符串方法strip() 去除字符串两端多余的空格(不带参数)

原文如下:

以下是基于使用您提供的输入 ['Quantity Required', ' 1'] 来获得 1 的输出

如果输入是['Quantity Required', ' 1']作为列表:

>>> my_input = ['Quantity Required', ' 1']
>>> int(my_input[1].strip())
>>> 1 # is an integer

您可以将my_input 替换为文字列表。

如果输入是字符串:

>>> string = "['Quantity Required', ' 1']"
>>> int(string.split(', ')[1].strip("'] "))
>>> 1 # is an integer

【讨论】:

不好问题的好答案。 ['BID NO: GEM/2020/B/756203', '查看勘误', '', '', '', '项目:台式计算机', '所需数量: 35', '', '', '', '部门名称和地址:', '', 'Ministry of Electronics and Information Technology Na Hq, New Delhi Unique Identification Authority Of India (uidai)', '', '' , '', '开始日期: 19-08-2020 05:33 PM', '结束日期: 10-09-2020 04:00 PM'] bid_data 包含 qnty = int(bid_data[6][1].strip()) ValueError: int() 基数为 10 的无效文字:'u' 错误 请学习如何调试。您可以在此处使用带有print 的“可怜的人调试”。错误信息很清楚:列表索引不存在。这可能是[6][1]。所以使用print(bid_data) 来查看列表是否包含至少七个元素。如果是,则检查下一个索引。 print(bid_data[6].split(', ')) 是否至少提供了两个元素?

以上是关于如何在单行代码中删除 python 3 中类列表中的 [ , ] 和单引号? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

掌握这9个单行代码技巧!你也能写出『高端』Python代码 ⛵

python中类的构造方法中需要定义和初始化变量吗?

Python的一些单行代码(摘抄)

Python 如何优雅的删除列表中的重复元素

python如何有多个重复元素删除其中一个?

在 Python 中取消选择列表列表