Python技能树练习——python字符串转列表

news2025/1/2 0:03:41

一、题目与解

把下列字符串转为列表格式输出

    top_ide_trend = """
Rank	Change	IDE	Share	Trend
1		Visual Studio	29.24 %	+3.5 %
2		Eclipse	13.91 %	-2.9 %
3		Visual Studio Code	12.07 %	+3.3 %
4		Android Studio	9.13 %	-2.5 %
5		pyCharm	8.43 %	+0.7 %
6		IntelliJ	6.7 %	+0.8 %
7		NetBeans	4.82 %	-0.3 %
8		Sublime Text	3.49 %	-0.2 %
9		Xcode	3.37 %	-1.2 %
10		Atom	3.25 %	-0.5 %
11		Code::Blocks	2.16 %	+0.2 %
12		Vim	0.79 %	-0.1 %
13		Xamarin	0.48 %	-0.1 %
14		PhpStorm	0.46 %	-0.2 %
15		geany	0.39 %	+0.2 %
16		Komodo	0.31 %	-0.2 %
17		Qt Creator	0.26 %	-0.0 %
18		Emacs	0.18 %	-0.1 %
19		JDeveloper	0.13 %	-0.0 %
20		RAD Studio	0.08 %	-0.0 %
21		JCreator	0.07 %	-0.0 %
22		Light Table	0.07 %	-0.0 %
23		MonoDevelop	0.06 %	-0.0 %
24		SharpDevelop	0.03 %	-0.0 %
25		Eric Python	0.03 %	-0.0 %
26		Aptana	0.02 %	-0.0 %
27		RubyMine	0.02 %	-0.0 %
28		Coda 2	0.02 %	+0.0 %
29		Monkey Studio	0.01 %	-0.0 %
30		DrJava	0.01 %	-0.0 %
"""

输出如下:

[
{'Rank': '1', 'Change': '', 'IDE': 'Visual Studio', 'Share': '29.24 %', 'Trend': '+3.5 %'}, 
{'Rank': '2', 'Change': '', 'IDE': 'Eclipse', 'Share': '13.91 %', 'Trend': '-2.9 %'}, 
{'Rank': '3', 'Change': '', 'IDE': 'Visual Studio Code', 'Share': '12.07 %', 'Trend': '+3.3 %'}, 
{'Rank': '4', 'Change': '', 'IDE': 'Android Studio', 'Share': '9.13 %', 'Trend': '-2.5 %'}, 
{'Rank': '5', 'Change': '', 'IDE': 'pyCharm', 'Share': '8.43 %', 'Trend': '+0.7 %'}, 
{'Rank': '6', 'Change': '', 'IDE': 'IntelliJ', 'Share': '6.7 %', 'Trend': '+0.8 %'}, 
{'Rank': '7', 'Change': '', 'IDE': 'NetBeans', 'Share': '4.82 %', 'Trend': '-0.3 %'}, 
{'Rank': '8', 'Change': '', 'IDE': 'Sublime Text', 'Share': '3.49 %', 'Trend': '-0.2 %'}, 
{'Rank': '9', 'Change': '', 'IDE': 'Xcode', 'Share': '3.37 %', 'Trend': '-1.2 %'},
{'Rank': '10', 'Change': '', 'IDE': 'Atom', 'Share': '3.25 %', 'Trend': '-0.5 %'}, 
{'Rank': '11', 'Change': '', 'IDE': 'Code::Blocks', 'Share': '2.16 %', 'Trend': '+0.2 %'}, 
{'Rank': '12', 'Change': '', 'IDE': 'Vim', 'Share': '0.79 %', 'Trend': '-0.1 %'}, 
{'Rank': '13', 'Change': '', 'IDE': 'Xamarin', 'Share': '0.48 %', 'Trend': '-0.1 %'}, 
{'Rank': '14', 'Change': '', 'IDE': 'PhpStorm', 'Share': '0.46 %', 'Trend': '-0.2 %'}, 
{'Rank': '15', 'Change': '', 'IDE': 'geany', 'Share': '0.39 %', 'Trend': '+0.2 %'}, 
{'Rank': '16', 'Change': '', 'IDE': 'Komodo', 'Share': '0.31 %', 'Trend': '-0.2 %'}, 
{'Rank': '17', 'Change': '', 'IDE': 'Qt Creator', 'Share': '0.26 %', 'Trend': '-0.0 %'}, 
{'Rank': '18', 'Change': '', 'IDE': 'Emacs', 'Share': '0.18 %', 'Trend': '-0.1 %'}, 
{'Rank': '19', 'Change': '', 'IDE': 'JDeveloper', 'Share': '0.13 %', 'Trend': '-0.0 %'}, 
{'Rank': '20', 'Change': '', 'IDE': 'RAD Studio', 'Share': '0.08 %', 'Trend': '-0.0 %'}, 
{'Rank': '21', 'Change': '', 'IDE': 'JCreator', 'Share': '0.07 %', 'Trend': '-0.0 %'}, 
{'Rank': '22', 'Change': '', 'IDE': 'Light Table', 'Share': '0.07 %', 'Trend': '-0.0 %'}, 
{'Rank': '23', 'Change': '', 'IDE': 'MonoDevelop', 'Share': '0.06 %', 'Trend': '-0.0 %'}, 
{'Rank': '24', 'Change': '', 'IDE': 'SharpDevelop', 'Share': '0.03 %', 'Trend': '-0.0 %'}, 
{'Rank': '25', 'Change': '', 'IDE': 'Eric Python', 'Share': '0.03 %', 'Trend': '-0.0 %'}, 
{'Rank': '26', 'Change': '', 'IDE': 'Aptana', 'Share': '0.02 %', 'Trend': '-0.0 %'}, 
{'Rank': '27', 'Change': '', 'IDE': 'RubyMine', 'Share': '0.02 %', 'Trend': '-0.0 %'}, 
{'Rank': '28', 'Change': '', 'IDE': 'Coda 2', 'Share': '0.02 %', 'Trend': '+0.0 %'}, 
{'Rank': '29', 'Change': '', 'IDE': 'Monkey Studio', 'Share': '0.01 %', 'Trend': '-0.0 %'}, 
{'Rank': '30', 'Change': '', 'IDE': 'DrJava', 'Share': '0.01 %', 'Trend': '-0.0 %'}
]

代码如下:

def parse_ide_trend(top_ide_trend):
    top_ides = []
    top_ide_lines = top_ide_trend.split('\n')[1:]
    head = top_ide_lines[0]
    columns = head.split('\t')
    for row in top_ide_lines[1:]:
        row = row.strip()
        if row:
            cells = row.split('\t')
            top_ide = {}
            for i in range(0, len(columns)):
                column = columns[i]
                cell = cells[i]
                top_ide[column] = cell
            top_ides.append(top_ide)
    return top_ides 


if __name__ == "__main__":
    top_ide_trend = ...
    top_ides = parse_ide_trend(top_ide_trend)
    print(top_ides)

 二、代码理解

 2.1 直接输出看一下字符串中的格式

2.2 split("\n)

 输出结果如下:

['', 'Rank\tChange\tIDE\tShare\tTrend', '1\t\tVisual Studio\t29.24 %\t+3.5 %', '2\t\tEclipse\t13.91 %\t-2.9 %','3\t\tVisual Studio Code\t12.07 %\t+3.3 %', '4\t\tAndroid Studio\t9.13 %\t-2.5 %', '5\t\tpyCharm\t8.43 %\t+0.7 %', '']

可以看到第一个和最后一个是空值

所以对于list集合top_ide_lines,只需要取下标为1往后的值

top_ide_lines = top_ide_trend.split('\n')[1:]

由于最后一个是空,所以遍历该list时要判断非空!!

 2.3 split('\t')取表的head头数据

 2.4 遍历split('\t')取每个值数据

 只取以上划红线部分,下标为0不是值

所以需要再次用到[1:]

if __name__ == "__main__":
    top_ide_trend = """
Rank	Change	IDE	Share	Trend
1		Visual Studio	29.24 %	+3.5 %
2		Eclipse	13.91 %	-2.9 %
3		Visual Studio Code	12.07 %	+3.3 %
4		Android Studio	9.13 %	-2.5 %
5		pyCharm	8.43 %	+0.7 %
"""
#   top_ide_lines = top_ide_trend.split("\n")
    top_ide_lines = top_ide_trend.split('\n')[1:]
    print(top_ide_lines)
    head = top_ide_lines[0]
    columns = head.split('\t')
    print(columns)
    top_ides = []
    for row in top_ide_lines[1:]:
        row = row.strip() #删除前后空格
        if row: #判断非空
            cells = row.split('\t')
            top_ide = {}
            for item in range(0,len(columns)):
                column = columns[item] # item=0时,colum=Rank,作为key值
                cell = cells[item]  #item=0时,cell = 1,作为value值
                top_ide[column] = cell # item=0时,top_ide中的值为{"Rank":"1"}
            top_ides.append(top_ide)
    print(top_ides)

             

输出结果如下:

PS E:\myProjects\lyx> & E:/Python2/python.exe e:/myProjects/lyx/test/myPython/test.py
['Rank\tChange\tIDE\tShare\tTrend', '1\t\tVisual Studio\t29.24 %\t+3.5 %', '2\t\tEclipse\t13.91 %\t-2.9 %', '3\t\tVisual Studio Code\t12.07 %\t+3.3 %', '4\t\tAndroid Studio\t9.13 %\t-2.5 %', '5\t\tpyCharm\t8.43 %\t+0.7 %', '']
['Rank', 'Change', 'IDE', 'Share', 'Trend']
[{'Rank': '1', 'Change': '', 'IDE': 'Visual Studio', 'Share': '29.24 %', 'Trend': '+3.5 %'}, {'Rank': '2', 'Change': '', 'IDE': 'Eclipse', 'Share': '13.91 %', 'Trend': '-2.9 %'}, {'Rank': '3', 'Change': '', 'IDE': 'Visual Studio Code', 'Share': '12.07 %', 'Trend': '+3.3 %'}, {'Rank': '4', 'Change': '', 'IDE': 'Android Studio', 'Share': '9.13 %', 'Trend': '-2.5 %'}, {'Rank': '5', 'Change': '', 'IDE': 'pyCharm', 'Share': '8.43 %', 'Trend': '+0.7 %'}]
PS E:\myProjects\lyx>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1113226.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【设计模式】设计模式概述

😀大家好,我是白晨,一个不是很能熬夜😫,但是也想日更的人✈。如果喜欢这篇文章,点个赞👍,关注一下👀白晨吧!你的支持就是我最大的动力!&#x1f4…

中文编程工具开发软件实际案例:酒店饭店餐饮点餐管理系统软件编程实例

中文编程工具开发软件实际案例:酒店饭店餐饮点餐管理系统软件编程实例图片如下 软件的安装方法: 软件绿色免安装,压缩包文件解压后,将文件夹复制到电脑的D或E盘里,将软件目录下的红色程序图标按右键发送到桌面快捷方式…

泛微全新低代码平台e-builder在沪发布,超千名与会者共商数字化转型

10月18日下午,泛微低代码平台体验大会在上海顺利举办,大会以“智能、协同、全程数字化”为主题,吸引了上千位政府及企事单位的信息化负责人参与。 活动现场,参会者身临其境地体验了泛微低代码平台,了解了泛微低代码平…

【树莓派c++图像处理起航1】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Qt OPENCV 安装测试?1. 安装qt2.安装opencv 的基础库3. 安装的路就决定了不会一帆风顺3.1.QT 安装出错3.2 运行Qt错误 4. opencv实际路径&#…

汽车辅助系统

目录 一,项目描述 二,项目 功能 三,代码实现 (1)倒车雷达 (2)AD(对 雨滴与光敏电阻传感器进行AD采集) (3)雨刷 (4)灯光 最后总结&#xf…

干货分享:网页录屏的免费方法!

“网页怎么录屏呀,在浏览器看到一篇文章,觉得挺有价值的,想保存下来,但是不能下载,也不可以复制粘贴,朋友说可以录下来保存,想问问大家,有什么好用免费的网页录屏方法推荐吗&#xf…

Python入门指南

概述: Python是一种简单易学、功能强大的编程语言,广泛应用于数据分析、Web开发、人工智能等领域。本文将为初学者提供一个Python入门指南,从安装到基本语法,帮助您开始编写Python程序。 第一部分:安装Python 1、进入…

单链表经典OJ题 :分割链表

题目: 给你一个链表的头节点 head 和一个特定值 x,请你对链表进行分隔,使得所有小于x 的节点都出现在 大于或等于 x 的节点之前。 你不需要保留 每个分区中各节点的初始相对位置。 图例: 本题的意思: 给定一个数值&am…

C# Onnx Yolov8 Detect 红绿灯检测

效果 lable GreenCircular GreenLeft GreenRight GreenStraight RedCircular RedLeft RedRight RedStraight 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; usi…

从零开始探索C语言(十二)----预处理器、输入输出及文件读写

文章目录 1. 预处理器1.1 预处理器实例1.2 预定义宏1.3 预处理器运算符1.4 参数化的宏 2. 输入和输出2.1 getchar() & putchar() 函数2.2 gets() & puts() 函数 3. 文件读写3.1 打开文件3.2 关闭文件3.3 写入文件3.4 读取文件3.5 二进制 I/O 函数 4. typedef 和 #defin…

YOLOv8改进实战 | 更换主干网络Backbone之轻量化模型Efficientvit

前言 轻量化网络设计是一种针对移动设备等资源受限环境的深度学习模型设计方法。下面是一些常见的轻量化网络设计方法: 网络剪枝:移除神经网络中冗余的连接和参数,以达到模型压缩和加速的目的。分组卷积:将卷积操作分解为若干个较小的卷积操作,并将它们分别作用于输入的不…

【java】【MyBatisPlus】【一】快速入门程序

目录 1、创建空项目mybatisProject 2、创建springboot模块 3、删除多余文件 4、修改pom,引入mybatisplus 5、设置application.yml 6、准备实体Emp 7、创建EmpMapper接口 8、测试MybatisQuickstartApplicationTests 前言:学习MyBatisPlus的基本使…

想要隐藏Word文件内容,如何做?四个方法!

Word文件中有些内容想要隐藏,该如何隐藏?今天分享几个方法给大家 方法一: 最简单的方法,将字体颜色与背景颜色设置为一致的,这样就达到了隐藏的效果,选中文字再修改颜色就可以恢复字体 方法二&#xff1a…

MaaS,云厂商在打一场“翻身仗”

今年以来,大模型的热度,让云计算产业为之沸腾。要举出一个最有力的证明,应该是:MaaS(Model as Service)这种全新模式的出现,一座座“模型工厂”,已经建起来了。 所谓MaaS&#xff0c…

怎样才能去除视频中的背景音乐,保留人声?

做视频剪辑,二次创作的朋友,需要去除视频中的背景音乐,保留人声;或者去除人声,保留背景音乐。如果请身边做视频的朋友帮忙,可有时不能沟通到位,完成后的效果并不是很理想,就很尴尬了…

Leetcode—283.移动零【简单】

2023每日刷题&#xff08;三&#xff09; Leetcode—283.移动零 双指针法yyds&#xff01; void moveZeroes(int* nums, int numsSize){// 双指针法int left 0, right 0;while(right < numsSize) {if(nums[right] ! 0) {int tmp nums[right];nums[right] 0;nums[left]…

【C++】auto 范围for nullptr

目录 一&#xff0c;auto 1&#xff0c;类型别名思考 2&#xff0c;auto 简介 3&#xff0c;auto 的使用细则 1&#xff0c;auto 与指针和引用结合起来使用 2&#xff0c;同一行定义多个变量 3&#xff0c;auto 不能推导的场景 二&#xff0c;基于范围的for循环 1&…

音频信号的频谱分析实例

在前面的文章 信号频谱分析与功率谱密度 中&#xff0c;我们初步探讨了信号频谱分析的概念&#xff0c;并介绍了其数学工具。本篇文章将结合实例&#xff0c;进一步探讨频谱分析在音频信号处理中的应用。 音频信号的频谱分析是一种将时域中的音频信号转换为频域表示的过程&…

华为云CodeArts IDE for Java安装使用教程

本篇内容主要介绍使用华为云CodeArts IDE for Java创建工程、代码补全、运行调试代码、Build构建和测试相关的主要功能。 一、下载安装华为云CodeArts IDE for Java 华为云CodeArts IDE for Java安装要求 至少需要 2 GB RAM &#xff0c;但是推荐8 GB RAM; 至少需要 2.5 GB 硬…