iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python字符串的拆分与连接详解
  • 742
分享到

Python字符串的拆分与连接详解

2024-04-02 19:04:59 742人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录拆分字符串无参数拆分指定分隔符使用 Maxsplit 限制拆分连接和连接字符串与+运算符连接在 python 中从列表到字符串 .join()生活中几乎没有什么保证:死亡、税收和

生活中几乎没有什么保证:死亡、税收和需要处理字符串的程序员。字符串可以有多种形式。它们可以是非结构化文本、用户名、产品描述、数据库列名称,或者我们使用语言描述的任何其他内容。

由于字符串数据几乎无处不在,因此掌握有关字符串的交易工具非常重要。幸运的是,Python 使字符串操作变得非常简单,尤其是与其他语言甚至旧版本的 Python 相比时。

在本文中,您将学习一些最基本的字符串操作:拆分、连接和连接。您不仅会学习如何使用这些工具,而且会更深入地了解它们的工作原理。

拆分字符串

在 Python 中,字符串表示为str对象,它们是不可变的:这意味着不能直接更改内存中表示的对象。这两个事实可以帮助您学习(然后记住)如何使用.split().

您是否已经猜到字符串的这两个特性与 Python 中的拆分功能有何关系?如果您猜测这.split()是一个实例方法,因为字符串是一种特殊类型,那么您是对的!在其他一些语言(如 Perl)中,原始字符串用作独立.split()函数的输入,而不是对字符串本身调用的方法。

注意:调用字符串方法的方法

像这样的字符串方法.split()在这里主要显示为在字符串上调用的实例方法。它们也可以被称为静态方法,但这并不理想,因为它更“冗长”。为了完整起见,这里有一个例子:


# Avoid this:
str.split('a,b,c', ',')

当您将其与首选用法进行比较时,这既笨重又笨拙:


# Do this instead:
'a,b,c'.split(',')

有关 Python 中的实例、类和静态方法的更多信息,请查看我们的深入教程

字符串不变性怎么样?这应该提醒您字符串方法不是就地操作,但它们会在内存中返回一个新对象。

注意:就地操作

就地操作是直接更改调用它们的对象的操作。一个常见的例子是在列表上使用的.append()方法:当你调用一个列表时,通过将输入添加到同一个列表来直接更改该列表。.append().append()

无参数拆分

在深入之前,让我们看一个简单的例子:


>>>
>>> 'this is my string'.split()
['this', 'is', 'my', 'string']

这实际上是.split()调用的一个特例,我选择它是为了它的简单性。没有指定任何分隔符,.split()将任何空格都算作分隔符。

裸调用的另一个特点.split()是它会自动删除前导和尾随空格,以及连续的空格。比较.split()在没有分隔符参数的情况下调用以下字符串和有' '作为分隔符参数的调用:


>>>
>>> s = ' this   is  my string '
>>> s.split()
['this', 'is', 'my', 'string']
>>> s.split(' ')
['', 'this', '', '', 'is', '', 'my', 'string', '']

首先要注意的是,这展示了 Python 中字符串的不变性:后续调用.split()处理原始字符串,而不是第一次调用.split().

您应该看到的第二件事也是主要的事情是,bare .split()call 提取句子中的单词并丢弃任何空格。

指定分隔符

.split(' '),另一方面,更字面意思。当有前导或尾随分隔符时,您将得到一个空字符串,您可以在结果列表的第一个和最后一个元素中看到该字符串。

如果有多个连续的分隔符(例如“this”和“is”之间以及“is”和“my”之间),第一个将用作分隔符,随后的分隔符将进入您的结果列表作为空字符串。

注意:调用中的分隔符 .split()

虽然上面的示例使用单个空格字符作为 的分隔符输入.split(),但用作分隔符的字符类型或字符串长度不受限制。唯一的要求是你的分隔符是一个字符串。你可以使用从"..."到 even 的任何东西"separator"。

使用 Maxsplit 限制拆分

.split()有另一个可选参数称为maxsplit. 默认情况下,.split()将在调用时进行所有可能的拆分。maxsplit但是,当您为 赋值时,只会进行给定数量的拆分。使用我们之前的示例字符串,我们可以看到maxsplit:


>>>
>>> s = "this is my string"
>>> s.split(maxsplit=1)
['this', 'is my string']

如上所示,如果设置maxsplit为1,则第一个空白区域将用作分隔符,其余的将被忽略。让我们做一些练习来测试到目前为止我们学到的一切。

练习:“自己尝试:Maxsplit”显示隐藏

当你给一个负数作为maxsplit参数时会发生什么?

解决方案:“自己尝试:Maxsplit”显示隐藏

.split()将在所有可用的分隔符上拆分您的字符串,这也是maxsplit未设置时的默认行为。

练习:“部分理解检查”显示隐藏

您最近收到了一个格式非常糟糕的逗号分隔值 (CSV) 文件。您的工作是将每一行提取到一个列表中,该列表的每个元素代表该文件的列。是什么让它格式错误?“地址”字段包含多个逗号,但需要在列表中表示为单个元素!

假设您的文件已作为以下多行字符串加载到内存中:


Name,Phone,Address
Mike Smith,15554218841,123 Nice St, Roy, NM, USA
Anita Hernandez,15557789941,425 Sunny St, New York, NY, USA
Guido van Rossum,315558730,Science Park 123, 1098 XG Amsterdam, NL

您的输出应该是一个列表列表:


[
    ['Mike Smith', '15554218841', '123 Nice St, Roy, NM, USA'],
    ['Anita Hernandez', '15557789941', '425 Sunny St, New York, NY, USA'],
    ['Guido van Rossum', '315558730', 'Science Park 123, 1098 XG Amsterdam, NL']
]

每个内部列表代表我们感兴趣的 CSV 行,而外部列表将它们保存在一起。

解决方案:“部分理解检查”显示隐藏

这是我的解决方案。有几种方法可以攻击它。重要的是您使用.split()了它的所有可选参数并获得了预期的输出:


input_string = """Name,Phone,Address
Mike Smith,15554218841,123 Nice St, Roy, NM, USA
Anita Hernandez,15557789941,425 Sunny St, New York, NY, USA
Guido van Rossum,315558730,Science Park 123, 1098 XG Amsterdam, NL"""

def string_split_ex(unsplit):
    results = []

    # Bonus points for using splitlines() here instead, 
    # which will be more readable
    for line in unsplit.split('\n')[1:]:
        results.append(line.split(',', maxsplit=2))

    return results

print(string_split_ex(input_string))

我们.split()在这里打了两次电话。第一次使用可能看起来很吓人,但别担心!我们将逐步完成它,您会对这些表达式感到满意。让我们再看看第一个.split()调用:unsplit.split('\n')[1:].

第一个元素是unsplit,它只是指向输入字符串的变量。然后我们有我们的.split()电话:.split('\n')。在这里,我们正在拆分一个称为换行符的特殊字符。

有什么作用\n?顾名思义,它告诉正在读取字符串的任何人,它后面的每个字符都应该显示在下一行。在像我们这样的多行字符串中,每行末尾input_string都有一个隐藏\n。

最后一部分可能是新的:[1:]. 到目前为止的语句给了我们一个内存中的新列表,[1:]看起来像一个列表索引符号,它是——有点!这个扩展的索引符号给了我们一个列表 slice。在这种情况下,我们取 index 处的元素1及其后的所有元素,丢弃 index 处的元素0。

总之,我们遍历一个字符串列表,其中每个元素代表多行输入字符串中除了第一行之外的每一行。

在每个字符串中,我们.split()再次调用using,作为拆分字符,但这次我们只使用maxsplit前两个逗号进行拆分,而地址保持不变。然后我们将该调用的结果附加到恰当命名的results数组并将其返回给调用者。

连接和连接字符串

另一个基本的字符串操作与拆分字符串相反:字符串连接。如果你没见过这个词,别担心。这只是说“粘合在一起”的一种奇特方式。

与+运算符连接

有几种方法可以做到这一点,具体取决于您要实现的目标。最简单和最常用的方法是使用加号 ( +) 将多个字符串相加。只需将 a 放在+您想要连接在一起的任意数量的字符串之间:


>>>
>>> 'a' + 'b' + 'c'
'abc'

为了与数学主题保持一致,您还可以将字符串相乘以重复它:


>>>
>>> 'do' * 2
'dodo'

请记住,字符串是不可变的!如果连接或重复存储在变量中的字符串,则必须将新字符串分配给另一个变量以保留它。


>>>
>>> orig_string = 'Hello'
>>> orig_string + ', world'
'Hello, world'
>>> orig_string
'Hello'
>>> full_sentence = orig_string + ', world'
>>> full_sentence
'Hello, world'

如果我们没有不可变的字符串,full_sentence则会输出'Hello, world, world'.

另一个注意事项是 Python 不进行隐式字符串转换。如果您尝试将字符串与非字符串类型连接起来,Python将引发一个TypeError:


>>>
>>> 'Hello' + 2
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be str, not int

这是因为您只能将字符串与其他字符串连接起来,如果您来自像 javascript 这样试图进行隐式类型转换的语言,这对您来说可能是一种新行为。

在 Python 中从列表到字符串 .join()

还有另一种更强大的方法可以将字符串连接在一起。您可以使用该join()方法从 Python 中的列表转换为字符串。

这里的常见用例是当您有一个由字符串组成的可迭代对象(如列表),并且您希望将这些字符串组合成一个字符串时。就像.split(),.join()是一个字符串实例方法。如果您所有的字符串都在一个可迭代对象中,您会调用哪一个.join()?

这是一个有点棘手的问题。请记住,当您使用 时.split(),您将在要拆分的字符串或字符上调用它。相反的操作是.join(),因此您可以在要用于将可迭代字符串连接在一起的字符串或字符上调用它:


>>>
>>> strings = ['do', 're', 'mi']
>>> ','.join(strings)
'do,re,mi'

在这里,我们strings用逗号 ( ,)连接列表的每个元素,并调用.join()它而不是strings列表。

练习:“通过加入提高可读性”显示隐藏

如何使输出文本更具可读性?

解决方案:“通过加入提高可读性”显示隐藏

您可以做的一件事是添加间距:


>>>
>>> strings = ['do', 're', 'mi']
>>> ', '.join(strings)
'do, re, mi'

通过在我们的连接字符串中添加一个空格,我们大大提高了输出的可读性。在加入字符串以提高可读性时,您应该始终牢记这一点。

.join()很聪明,因为它将您的“joiner”插入到您想要加入的可迭代的字符串之间,而不是仅仅在可迭代的每个字符串的末尾添加您的joiner。这意味着,如果您传递 size 的迭代1,您将看不到您的加入者:


>>>
>>> 'b'.join(['a'])
'a'

练习:“部分理解检查”显示隐藏

使用我们的网页抓取教程,您已经构建了一个很棒的天气抓取工具。但是,它会在列表列表中加载字符串信息,每个列表都包含要写出到 CSV 文件的唯一信息行:


[
    ['Boston', 'MA', '76F', '65% Precip', '0.15 in'],
    ['San Francisco', 'CA', '62F', '20% Precip', '0.00 in'],
    ['Washington', 'DC', '82F', '80% Precip', '0.19 in'],
    ['Miami', 'FL', '79F', '50% Precip', '0.70 in']
]

您的输出应该是如下所示的单个字符串:


"""
Boston,MA,76F,65% Precip,0.15in
San Francisco,CA,62F,20% Precip,0.00 in
Washington,DC,82F,80% Precip,0.19 in
Miami,FL,79F,50% Precip,0.70 in
"""

解决方案:“部分理解检查”显示隐藏

对于此解决方案,我使用了列表推导式,这是 Python 的一项强大功能,可让您快速构建列表。如果您想了解更多关于它们的信息,请查看这篇涵盖 Python 中所有可用推导式的精彩文章。

以下是我的解决方案,以列表列表开始并以单个字符串结尾:


input_list = [
    ['Boston', 'MA', '76F', '65% Precip', '0.15 in'],
    ['San Francisco', 'CA', '62F', '20% Precip', '0.00 in'],
    ['Washington', 'DC', '82F', '80% Precip', '0.19 in'],
    ['Miami', 'FL', '79F', '50% Precip', '0.70 in']
]

# We start with joining each inner list into a single string
joined = [','.join(row) for row in input_list]

# Now we transfORM the list of strings into a single string
output = '\n'.join(joined)

print(output)

这里我们.join()不是用一次,而是用了两次。首先,我们在列表推导中使用它,它将每个内部列表中的所有字符串组合成一个字符串。接下来,我们将每个字符串与\n我们之前看到的换行符连接起来。最后,我们简单地打印结果,以便我们可以验证它是否符合我们的预期。 

到此这篇关于Python字符串的拆分与连接详解的文章就介绍到这了,更多相关Python字符串拆分与连接内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python字符串的拆分与连接详解

本文链接: https://www.lsjlt.com/news/161087.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python字符串的拆分与连接详解
    目录拆分字符串无参数拆分指定分隔符使用 Maxsplit 限制拆分连接和连接字符串与+运算符连接在 Python 中从列表到字符串 .join()生活中几乎没有什么保证:死亡、税收和...
    99+
    2024-04-02
  • Python字符串如何实现拆分与连接
    小编给大家分享一下Python字符串如何实现拆分与连接,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!拆分字符串在 Python 中,字符串表示为str对象,它们是不可变的:这意味着不能直接更改内存中表示的对象。这两个事实可...
    99+
    2023-06-22
  • python字符串拼接.join()和拆分.split()详解
    目录1. 字符串拆分函数.split()2. 字符串拼接函数.join()扩展:理解" ".join(s.split(" ")[::-1])[::-1]总结 1. 字符串拆分函数.s...
    99+
    2024-04-02
  • Oracle字符串拆分实例详解
    目录oracle字符串拆分1. 使用regexp_substr()函数1.1 拆分aaa,bbb,ccc1.2 拆分aaa;bbb;ccc1.3 level作用2. 在oracle中实现mysql的find_i...
    99+
    2023-04-03
    oracle 字符串切割 oracle字符串拆分 oracle拆分函数
  • 怎么在python拆分与合并字符串
    这篇文章将为大家详细讲解有关怎么在python拆分与合并字符串,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python有哪些常用库python常用的库:1.requesuts;2.scra...
    99+
    2023-06-14
  • Android 字符串的替换,截取,拆分,拼接
    1 去除字符串中的 [ ] , " ", 逗号替换成 & 符号 public static String ReplaceString(List info) { String infoJson = JSONObject.t...
    99+
    2023-09-03
    android
  • python如何拆分字符串为列表
    这篇文章主要介绍了python如何拆分字符串为列表,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。拆分字符串为列表str1 = 'hello&nbs...
    99+
    2023-06-27
  • 在 Python 中拆分具有多个分隔符的字符串
    要使用多个定界符拆分字符串: 使用 re.split() 方法,例如 re.split(r',|-', my_str)。re.split() 方法将拆分所有出现的分隔符之一的字符串。 import r...
    99+
    2023-09-07
    python 正则表达式 开发语言
  • Python字符串怎么替换和吃拆分
    本篇内容介绍了“Python字符串怎么替换和吃拆分”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Python字符串替换替换所有匹配的子串。用...
    99+
    2023-06-17
  • SQL字符串的合并与拆分实例代码分析
    本篇内容主要讲解“SQL字符串的合并与拆分实例代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL字符串的合并与拆分实例代码分析”吧!字符串的合并在Or...
    99+
    2024-04-02
  • python 字符串详解
    目录一、字符串:二、使用:(1)空字符串和 len( ) 函数(2)转译字符( \ )(3)字符串拼接(4)字符串复制(5)不换行打印(6)从控制台读取参数:(7...
    99+
    2024-04-02
  • 如何使用Python的split()函数拆分字符串
    如何使用Python的split()函数拆分字符串,需要具体代码示例在Python编程中,字符串是一种非常常见的数据类型。而在处理字符串操作时,有时需要将一个字符串拆分成多个部分,这时就可以使用Python中的split()函数来实现。sp...
    99+
    2023-11-18
    Python 字符串 split()
  • python中字符串拼接.join()和拆分.split()函数怎么用
    这篇文章主要为大家展示了“python中字符串拼接.join()和拆分.split()函数怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“python中字符串拼接.join()和拆分.spl...
    99+
    2023-06-25
  • C++中常见的字符串连接问题详解
    C++中常见的字符串连接问题详解在C++编程中,字符串的连接是一项常见的操作。字符串连接指的是将两个或多个字符串拼接在一起形成一个新的字符串。本文将详细介绍C++中常见的字符串连接问题,并提供具体的代码示例。下面将从以下几个方面进行讨论。1...
    99+
    2023-10-22
    字符串拼接 字符串连接 C++字符串
  • Python中拆分具有多个分隔符的字符串方法实例
    目录使用方括号 [] 根据多个定界符拆分字符串处理前导或尾随定界符使用 str.replace() 拆分具有多个定界符的字符串使用可重用函数根据多个定界符拆分字符串使用 re.fin...
    99+
    2023-05-18
    python按分隔符进行分割 python多个分隔符 Python拆分字符串
  • MySQL字符串拼接与分组拼接字符串实例代码
    目录一、经典拼接concat(x,x,....)二、分隔符拼接CONCAT_WS(separator,str1,str2,...)三、分组拼接GROUP_CONCAT(expr)补充:在筛选查询...
    99+
    2023-02-02
    mysql字符串拼接 mysql拼接多个字符串 mysql字符串拼接函数
  • Java字符串拼接详解
    目录一、“+” 操作符二、StringBuilder(非线程安全)三、StringBuffer(线程安全)四、String 类的 concat 方法五、Str...
    99+
    2024-04-02
  • 详解Python的连接符
    目录 加号(+) 逗号(,) 空格 ( ) 总结python的连接符主要有 加号(+)、逗号(,)、空格(   ) 、反斜线(\)、join()的方式、  加号(+) #注意,+...
    99+
    2024-04-02
  • Oracle字符串拆分的方法是什么
    这篇文章主要介绍了Oracle字符串拆分的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Oracle字符串拆分的方法是什么文章都会有所收获,下面我们一起来看看吧。Oracle字符串拆分比如把一列 a,...
    99+
    2023-07-05
  • mysql拆分字符串的方法有哪些
    MySQL拆分字符串的方法有以下几种: 使用SUBSTRING_INDEX函数:这个函数可以按照指定的分隔符来拆分字符串,返回指定...
    99+
    2024-04-09
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作