Python必须掌握的8个高级字符串技巧

Python字符串看起来很简单,但是它们非常灵活,而且在代码里无处不在!

初看起来字符串似乎不像数据科学领域这样的高级,但是平常工作中经常需要大量的非结构化数据,深入研究字符串将会非常有启发!

1.用“ in”检查是否包含子串

当使用非结构化数据时,在较长的字符串中标识特定的单词或其他子字符串可能非常有帮助。最简单的方法是使用in运算符。

假设你正在使用列表等集合数据结构,并且需求是要确定字符串中是否存在某个子字符串。

在下面的示例中,你有一个的列表,并且想知道字符串“ West”是否在每个列表项中包含

        sample_list = ['North West', 'West', 'North East', 'East', 'South', 'North']

is_west = ['Yes' if 'West' in location else 'No' for location in sample_list]
#注意,这里使用了生成式语法

print(is_west)

# 输出:
# ['Yes', 'Yes', 'No', 'No', 'No', 'No']

      

2.F前缀魔法

F字符串是在Python 3.6中引入的,它们没有得到足够的认可。

我说它们很神奇是有原因的。他们:

  • 留出更大的灵活性,
  • 比其他方法更具可读性,并且
  • 执行速度更快。

但是他们是什么?F字符串(或格式化的字符串文字)允许您将变量(或任何表达式)放入字符串中。然后在运行时执行表达式。

要编写f字符串,请在字符串前面加上’f’。

让我们看一个例子:

        name = 'Nik'
birthyear = 1987

print(f'My name is {name} and I am {2020-birthyear} years old.')

#输出:
My name is Nik and I am 33 years old.


      

3.用[::-1]反转字符串

可以通过切片将字符串反转(与其他可迭代对象一样)。要反转任何可迭代的对象,都可以直接使用[::-1]。

-1用作step(步长)参数,Python通过该参数从最后一个值开始并以-1递增:

        string = 'pythonisfun'

print(string[::-1])

# Returns: nufsinohtyp


      

4.用.replace()替换子字符串

要替换子字符串,可以使用replace方法。它适用于任何类型的字符串,包括一个简单的空格(因为Python没有内置的删除空格的方法)。

让我们看一个例子:

        sample = 'Python is kind of fun.'

print(sample.replace('kind of', 'super'))

# 输出:
# Python is super fun.
      

5.用for循环遍历一个字符串

Python字符串是可迭代的对象(就像列表,集合等)。

如果要返回字符串的每个字母,可以编写:

        sample = 'python'

for letter in sample:
  print(letter)
  
# 输出:
# p
# y
# t
# h
# o
# n
      

6.使用.upper()、. lower()和.title()格式化字符串

Python字符串有时有点古怪。你从文件中获取的字符串,可能有小写、大写及首字母大写等内容,而你可能需要对它们进行格式化,以供日后使用。

  • .upper()将返回一个字符串,其中所有字符均为大写
  • .lower()将返回一个字符串,其中所有字符均小写
  • .title()将每个英语单词的首字母大写

让我们看看实际的例子:

        sample = 'THIS is a StRiNg'

print(sample.upper())
print(sample.lower())
print(sample.title())

# 输出:
# THIS IS A STRING
# this is a string
# This Is A String
      

7.检查回文和字谜

结合到目前为止所学的知识,你可以使用[::-1]切片轻松检查字符串是否是回文。

如果单词或词组的正反拼写完全相同,则为回文

同样,你可以使用排序函数返回字符串的已排序版本。如果两个排序的字符串相同,则它们是字谜

        string = 'taco cat'

def palindrome(string_to_check):
    if string.lower().replace(' ', '') == string.lower().replace(' ', '')[::-1]:
        print("你找到了回文!")
    else:
        print("你的字符串不是回文")

palindrome(string)

# 输出:
# 你找到了回文!
      

字谜是通过重新排列另一个单词而形成的单词或短语。简而言之,如果两个单词具有相同的字母而只是字母排列顺序不一样,则它们是字谜。

如果要查看两个词是否为字谜,可以对两个词进行排序,看看它们是否相同:

        def anagram(word1, word2):
    if sorted(word1) == sorted(word2):
        print(f"{word1} 和{word2} 是字迷!")
    else:
        print(f"{word1} 和 {word2} 不是字迷!")

anagram('silent', 'listen')

# 返回:
# silent 和listen 是字迷!
      

8.使用.split()分割字符串

假设你得到一个包含多种数据的字符串,需要拆分此字符串以解析出单个数据片段。

在下面的示例中,字符串包含区域,销售代表的姓氏以及订单号。

你可以使用.split()分割这些值:

        order_text = 'north-doe-001'
print(order_text.split('-'))

# 输出:
# ['north', 'doe', '001']
      

结论

在Python中字符串是最为频繁处理的数据类型之一,掌握它的高级技巧将会事功倍。

本文整理源自

<python成为专业人士笔记>

thanks Nik

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值