gpt4 book ai didi

Python 3 删除空列表

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:44 24 4
gpt4 key购买 nike

我正在从 10 行的文本中找到一行。

desc    = re.findall(r'@description (.*)', comment.strip())

发生的是它返回 @description 但它也有 9 个空列表。

print(desc)

返回:

[]
[]
[]
[]
[]
[]
[]
[]
['the desc is here']
[]

那么如何摆脱那些空的 [] 并使 desc=['the desc is here']


更新

我试过列表过滤器,结果还是一样

评论包含:

/**
* @param string username required the username of the registering user
* @param string password required
* @param string first_name required
* @param string last_name required
* @param string email required
* @package authentication
* @info user registration
* @description register a new user into the groupjump platform
*/

更新

comment是一个完整的字符串,所以我把它拆分成这样,这样我就可以逐行阅读

comments = route['comment']
comments = list(filter(None, comments.split('\n')))

实际代码

#!/usr/bin/env python3

import re

routes = []
description = ''
with open('troutes.php', 'r') as f:
current_comment = ''
in_comment = False
for line in f:
line = line.lstrip()
if line.startswith('/**'):
in_comment = True

if in_comment:
current_comment += line

if line.startswith('*/'):
in_comment = False

if line.startswith('Route::'):
matches = re.search(r"Route::([A-Z]+)\('(.*)', '(.*)'\);", line)
groups = matches.groups()
routes.append({
'comment': current_comment,
'method': groups[0],
'path': groups[1],
'handler': groups[2],
});
current_comment = '' # reset the comment

for route in routes:

# get comments
comments = route['comment']
comments = list(filter(None, comments.split('\n')))

for comment in comments:
params = re.findall(r'@param (.*)', comment.strip())
object = re.findall(r'@package (.*)', comment.strip())
info = re.findall(r'@info (.*)', comment.strip())
desc = re.search(r'@description (.*)', comment.strip())

print(comment[15:])

正在读取的数据:

<?php
/**
* @param string username required the username of the registering user
* @param string password required
* @param string first_name required
* @param string last_name required
* @param string email required
* @package authentication
* @info user registration
* @description register a new user into the groupjump platform
*/
Route::POST('v3/register', 'UserController@Register');

/**
* @param string username required the username of the registering user
* @param string password required
*/
Route::GET('v3/login', 'UserController@login');

最佳答案

单个列表的条件是:

if desc:
print(desc)

它是以下内容的简写版本:

if len(desc) > 0:
print(desc)

对于列表的列表,它是:

desc = [d for d in desc if d]

要仅获取字符串,请执行以下操作:

if desc:
print(desc[0])

关于Python 3 删除空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20998491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com