Python 编程骚操作连载(一)- 字符串、列表、字典和集合的处理(Part B)

简介: Python 编程骚操作连载(一)- 字符串、列表、字典和集合的处理(Part B)

一、字符串的处理

字符串对齐处理

要将字符串格式化输出,比如格式化输出一个字典类型的数据

dict_data = {
    "peter": 80,
    "stark": 99,
    "thor": 60,
    "banner": 98,
    "clint": 80
}
for k, v in dict_data.items():
    print('{}: {}'.format(k, v))
复制代码

执行上述代码,输出结果如下:

peter: 80
stark: 99
thor: 60
banner: 98
clint: 80
复制代码

将 Key 和 Value 作对齐处理,有两种方式:

第一种是使用字符串对象 str 的 ljustrjustcenter 方法进行左右中对齐操作

# 其余代码保持不变
for k, v in dict_data.items():
    print('{}: {}'.format(k.ljust(6), str(v).ljust(6)))
复制代码

执行上述代码,输出结果如下:

peter : 80    
stark : 99    
thor  : 60    
banner: 98    
clint : 80    
复制代码

通过 ljust 方法实现了对齐,ljustrjustcenter 方法的第一个参数为长度是必填参数,第二个参数是填充的字符,默认是空格,长度如果大于字符串的长度则会用空格或者指定的字符来填补,如果小于字符串的长度,则无变化,原样输出字符串

name = 'peter'
print(name.ljust(10, '*'))
print(name.rjust(10, '*'))
print(name.center(10, '*'))
print(name.ljust(1, '*'))
复制代码

执行上述代码,输出结果如下:

peter*****
*****peter
**peter***
peter
复制代码

第四个输出语句指定的长度是小于字符串的长度的,输出的结果为原字符串。

第二种方式是使用内置的 format 方法进行对齐,在 format 方法中 <10 表示左对齐长度为10,>10 表示右对齐长度为10,^10 表示中间对齐长度为10

name = 'peter'
print(format(name, '<10'))
print(format(name, '>10'))
print(format(name, '^10'))
print(format(name, '<1'))
复制代码

执行上述代码,输出结果如下:

peter     
     peter
  peter   
peter
复制代码

使用 format 方法进行对齐输出,要注意 format 方法与字符串对象的 format 方法区分。

# 字典数据保持不变
for k, v in dict_data.items():
    print('{}: {}'.format(format(k, '<10'), format(v, '<10') ))
复制代码

执行上述代码,输出结果如下:

peter     : 80        
stark     : 99        
thor      : 60        
banner    : 98        
clint     : 80 
复制代码

去掉字符串中的无效字符

在后端处理前端表单中传来的数据时,以登录为例,通常都会对登录的用户名进行去空格处理,防止用户输入空格导致用户密码校验失败,获取去除字符串中的其他格式符如 \n\t 等。

可以使用字符串对象的 strip 方法,包括 lstriprstrip 方法取出两端的指定字符,默认去除空格,也可以指定要出的特殊字符

print('  stark  '.strip())
print('  stark  '.lstrip())
print('  stark  '.rstrip())
print('+-stark*/  '.strip(' +-*/'))
复制代码

执行上述代码,输出内容如下:

stark
stark  
  stark
stark
复制代码

可以使用切片以及拼接的方式来处理字符串中单个固定位置的字符

code = 'Mark-86'
print(code[:4] + code[5:])
复制代码

执行上述代码,输出结果如下:

Mark86
复制代码

也可以使用字符串的 replace 方法或者正则表达式的 sub 方法来替换任意位置的字符

data = 'stark\nbanner\nthor'
data = data.replace('\n', ' ')
print(data)
复制代码

执行上述代码,输出结果如下:

stark banner thor
复制代码

但是字符串的 replace 一次只能替换一种字符,要一次替换多种字符就需要使用到正则表达式的 sub 方法,该方法第一个参数为要替换的字符,使用 [] 包裹,第二个参数是要替换成什么字符串,第三个参数是要进行处理的字符串。

import re
data = 'stark\nbanner\nthor\t'
data = re.sub('[\n\t]', ' ', data)
print(data)
复制代码

执行上述代码,输出结果如下:

stark banner thor 
复制代码

还可以使用字符串对象的 translate 方法,可以同时删除多种不同的字符。translate 方法可以将一个字符映射到另一个字符串,既某一个字符改变为一个指定的字符。

txt = "Hello Ruby!"
x = "e"
y = "a"
# 建立映射关系
mytable = txt.maketrans(x, y)
print(txt.translate(mytable))
复制代码

执行上述代码,输出结果如下:

Hallo Ruby!
复制代码

使用 translate 方法的关键是首先要调用 maketrans 方法建立映射关系,然后在调用 translate 方法进行替换。

二、列表、字典和集合的处理

你知道几种在列表、字典和集合中筛选符合条件的数据的方式 ?

for 循环筛选出列表中大于0的元素

新建一个空列表,保存符合条件的数据。使用 for 循环迭代每一个元素,对每一个元素进行判断,符合条件就放入新建的列表。

def filter_positive_by_for_from_list(nums):
    _nums = []
    for num in nums:
        if num > 0:
            _nums.append(num)
    return _nums
if __name__ == '__main__':
    nums = [1, -1, 10, 2, 5, -9, -8, 7]
    _nums = filter_positive_by_for_from_list(nums)
    print(_nums)
复制代码

执行上述代码,输出结果如下:

c58bdcb066a5486bb22cd9d8c6d6efac_tplv-k3u1fbpfcp-zoom-in-crop-mark_4536_0_0_0.png

遍历所有数据并进行判断,效率较低



相关文章
|
3天前
|
存储 人工智能 数据挖掘
从零起步,揭秘Python编程如何带你从新手村迈向高手殿堂
【10月更文挑战第32天】Python,诞生于1991年的高级编程语言,以其简洁明了的语法成为众多程序员的入门首选。从基础的变量类型、控制流到列表、字典等数据结构,再到函数定义与调用及面向对象编程,Python提供了丰富的功能和强大的库支持,适用于Web开发、数据分析、人工智能等多个领域。学习Python不仅是掌握一门语言,更是加入一个充满活力的技术社区,开启探索未知世界的旅程。
12 5
|
3天前
|
人工智能 数据挖掘 开发者
探索Python编程:从基础到进阶
【10月更文挑战第32天】本文旨在通过浅显易懂的语言,带领读者从零开始学习Python编程。我们将一起探索Python的基础语法,了解如何编写简单的程序,并逐步深入到更复杂的编程概念。文章将通过实际的代码示例,帮助读者加深理解,并在结尾处提供练习题以巩固所学知识。无论你是编程新手还是希望提升编程技能的开发者,这篇文章都将为你的学习之旅提供宝贵的指导和启发。
|
1天前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
2天前
|
机器学习/深度学习 人工智能 数据可视化
探索Python编程:从基础到高级
【10月更文挑战第33天】本文是一篇深入浅出的Python编程入门教程,适合初学者阅读。文章首先介绍了Python的基本概念和语法,然后通过实例讲解了如何使用Python进行数据处理和分析,最后介绍了一些高级特性和库,帮助读者更好地掌握Python编程。无论你是编程新手还是有一定经验的开发者,这篇文章都能给你带来新的启示和收获。
|
3天前
|
存储 人工智能 数据挖掘
探索Python编程的奥秘
【10月更文挑战第32天】在这篇文章中,我们将一起踏上一段奇妙的Python编程之旅。从基础语法到高级特性,我们将通过一系列简单而直观的代码示例,逐步揭开Python语言背后的神秘面纱。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和深入的理解。让我们一起开始这段旅程吧!
|
28天前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
29 0
|
1月前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (一)
Python操作:字符串--列表--元组--字典--运算符 (一)
|
1月前
|
Python
Python操作:字符串--列表--元组--字典--运算符 (二)
Python操作:字符串--列表--元组--字典--运算符 (二)
|
3月前
|
存储 数据安全/隐私保护 索引
Python基础语法day02字符串详解和列表
Python基础语法day02字符串详解和列表
|
6月前
|
存储 索引 Python
Python基础 笔记(七) 容器--字符串、列表
Python基础 笔记(七) 容器--字符串、列表
50 4

热门文章

最新文章