如何在单行代码中删除 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 中类列表中的 [ , ] 和单引号? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章