如何学好Python——Python字符串解析

如何学好Python——Python字符串解析

有几个在Python数据类型。的主要数据类型,您可能会看到大多数都是字符串,整数、浮点数、列表、dict和元组。在这里,我们将介绍字符串数据类型。你会惊讶地发现,很多事情你可以做与Python中的字符串的盒子。还有一个字符串模块,您可以导入访问更多的功能,但我们不会看,相反,我们将涵盖以下主题:

  • 如何创建字符串

  • 字符串连接

  • 字符串的方法

  • 字符串分割

  • 字符串替换

如何创建一个字符串

中创建的字符串通常是三种方式��一。您可以使用单,报价两倍或三倍。让我们来看看!

>>> my_string="Welcome to Python!">>> another_string='The bright red fox jumped the fence.'>>> a_long_string='''This is amulti-line string. It covers more thanone line'''

三重引用线可以用三位单引号或双引号。无论哪种方式,他们允许程序员编写字符串到多个行。如果你打印出来,你会注意到输出保留换行符。如果你需要使用单引号字符串,然后用双引号括起来。看下面的例子。

>>> my_string="I'm a Python programmer!">>> otherString='The word "python" usually refers to a snake'>>> tripleString="""Here's another way to embed "quotes" in a string"""

上面的代码演示了如何将单引号或双引号字符串。实际上创建一个字符串,另一个方法是通过使用str方法。它是如何工作的:

>>> my_number=123>>> my_string=str(my_number)

如果你输入上面的代码到你的翻译,你会发现你有整数值转换为一个字符串,字符串分配给变量my_string。这就是所谓的铸件。你可以把一些数据类型到其他数据类型,如数字为字符串。但是你也会发现你不能总是做相反的,如铸造一个字符串“ABC”到一个整数。如果你这样做,你会得到一个错误就像下面的例子:

>>> int('ABC')Traceback (most recent call last): File "<string>", line 1, in <fragment>ValueError: invalid literal for int() with base 10: 'ABC'

正如你可能已经猜到了的消息,这意味着您不能将文字转换成一个整数。然而,如果你做了

>>> x=int("123")

那将会工作得很好。

应该注意的是,一个字符串是Python不可变类型之一。这意味着你不能改变一个字符串创建后的内容。让我们试着改变一个,看看会发生什么:

>>> my_string="abc">>> my_string[0]="d"Traceback (most recent call last): File "<string>", line 1, in <fragment>TypeError: 'str' object does not support item assignment

在这里,我们试图改变的第一个字符“a”“d”;然而这就提出了一个TypeError阻止我们这样做。现在你可能认为通过分配一个新的字符串相同的变量,你改变了字符串。让我们看看这是真的:

>>> my_string="abc">>> id(my_string)19397208>>> my_string="def">>> id(my_string)25558288>>> my_string=my_string+"ghi">>> id(my_string)31345312

通过检查对象的id,我们可以确定任何时候我们指定一个新值的变量,其身份的变化。

注意,在Python 2。x,只能包含ASCII字符的字符串。如果您需要在Python中unicode 2。x,那么您将需要先于你的字符串。这里有一个例子:

my_unicode_string=u"This is unicode!"

上面的例子实际上并不包含任何unicode,但它应该给你大意。Python 3。x,所有字符串都是unicode。

字符串连接

连接是一个很大的词,意味着将或添加两件事结合在一起。在这种情况下,我们想知道如何把两个字符串相加。您可能会怀疑,这个操作很容易在Python中:

>>> string_one="My dog ate ">>> string_two="my homework!">>> string_three=string_one+string_two

“+”运算符将两个字符串连接到一个。

字符串的方法

在Python中,字符串是一个对象。事实上,在Python中一切都是一个对象。与此同时,这足以知道字符串构建到他们有他们自己的方法。例如,假设您有以下字符串:

>>> my_string="This is a string!"

现在你想让这个字符串是完全用大写。要做到这一点,你需要做的就是调用它的上层()方法,如下:

>>> my_string.upper()

如果你的翻译,你也可以做同样的事情是这样的:

>>> "This is a string!".upper()

还有许多其他的字符串的方法。例如,如果你想让一切都是小写的,您将使用较低()方法。如果你想删除所有前导和尾随空白,您将使用带()。所有字符串的列表方法,输入以下命令到你的翻译:

>>> dir(my_string)

最后你应该看到类似如下:

[‘__add__’,‘__class__进行’,‘__contains__’,‘__delattr__’,‘__doc__’,‘__eq__’,‘__format__’,‘__ge__’,‘__getattribute__’,‘__getitem__’,‘__getnewargs__’,‘__getslice__’,‘__gt__’,‘__hash__’,‘__init__’,‘__le__’,‘__len__’,‘__lt__’,‘__mod__’,‘__mul__’,‘__ne__’,‘__new__’,‘__reduce__’,‘__reduce_ex__’,‘__repr__’,‘__rmod__’,‘__rmul__’,‘__setattr__’,‘__sizeof__’,‘__str__’,‘__subclasshook__’,‘_formatter_field_name_split’,‘_formatter_parser’,“利用”,“中心”,“数”,“解码”,“编码”,‘endswith’,‘expandtabs’,‘发现’,‘格式’,“索引”,‘isalnum’,‘isalpha’,‘isdigit’,‘islower’,‘isspace’,‘istitle’,‘isup’,‘一起’,‘ljust’,‘低’,带“带子”、“分区”,“替换”,‘rfind’,‘rindex’,‘rjust’,‘rpartition’,‘rsplit’,‘rstrip’,‘分裂’,‘splitlines’,‘startswith’,‘带’,‘swapcase’,“标题”,“翻译”,“上”,“zfill”)

您可以安全地忽略的方法与双下划线开始和结束,如__add__。他们不是每天使用的Python代码。关注其他的代替。如果你想知道什么其中一个,就寻求帮助。例如,假设你想学习什么是大写。为了找到答案,你会类型

>>> help(my_string.capitalize)

这将返回以下信息:

帮助内置函数利用:

大写(…)S.capitalize()- >字符串

返回字符串的副本年代只有首字符大写。

你刚刚学到的一点称为内省的话题。Python允许容易自省的对象,这使得它非常容易使用。基本上,自省允许你问Python本身。在前面的部分中,您学习了铸造。您可能想知道如何告诉什么类型的变量(即整数或字符串)。你可以问Python告诉你!

>>> type(my_string) <type 'str'>

如您所见,my_string变量类型的str !

字符串分割

一个主题,你会发现自己做了很多在现实世界中是字符串切片。我惊奇地发现我需要知道如何做到这一点在我的日常工作。让我们看一看如何切片与以下字符串:

>>> my_string="I like Python!"

每个字符在字符串中使用切片可以访问。例如,如果我想抓住第一个字符,我可以这样做:

>>> my_string[0:1]

这抓住了字符串中的第一个字符,但不包括,第二字符。是的,Python是从零开始的。有点容易理解,如果我们在地图上标出每个字符的位置在一个表:

012345678910111213
lkePython!

因此我们有一个字符串,该字符串是14个字符长,从0开始,经历13。让我们来做几个例子更好地得到这些概念进入我们的脑袋。

>>> my_string[:1]'I'>>> my_string[0:12]'I like Pytho'>>> my_string[0:13]'I like Python'>>> my_string[0:14]'I like Python!'>>> my_string[0:-5]'I like Py'>>> my_string[:]'I like Python!'>>> my_string[2:]'like Python!'

从这些例子中可以看到,我们所能做的只是指定开始一片的切片(即my_string[2]),切片的结束(即my_string[1])或两者(即my_string[0:13])。我们甚至可以使用负值,开始结束的字符串。所以我们做例子my_string(0:5)从0开始,但结束前5字符字符串的结束。

您可能想知道,你会使用这个。我发现自己使用它解析固定宽度记录在文件或偶尔解析复杂的文件名,遵循一个非常具体的命名约定。我还用它在解析值从二进制类型文件。任何工作,你需要做的文本文件处理会更容易如果你理解切片和如何有效地使用它。

你也可以通过索引访问字符串中每个字符。这是一个例子:

>>> print(my_string[0])

上面的代码将打印字符串中的第一个字符。

字符串格式化

字符串格式化(又名替换)的主题是替换成一个基本字符串值。大多数时候,你会插入字符串在字符串;但是你也会发现自己经常插入整数和浮点数转化为字符串。有两种不同的方法来完成这项任务。我们将从旧的做事方式,然后转到新的。

古老的方式替换字符串

学习如何做到这一点的最简单方法是看几个例子。所以我们开始吧:

>>> my_string="I like %s"%"Python">>> my_string'I like Python'>>> var="cookies">>> newString="I like %s"%var>>> newString'I like cookies'>>> another_string="I like %s and %s"%("Python",var)>>> another_string'I like Python and cookies'

正如你可能已经猜到的,% s是上面的代码的重要部分。它告诉Python,你可能很快就会插入文本。如果你遵循与百分之一签署和另一个字符串或字符串变量,然后Python将试图将其插入到字符串。可以插入多个字符串,字符串内% s的多个实例。你会发现在过去的例子。请注意,当你插入多个字符串,你必须附上你要插入的字符串括号。

现在,让我们看看会发生什么,如果我们不足够插入字符串:

>>> another_string="I like %s and %s"%"Python"Traceback (most recent call last): File "<string>", line 1, in <fragment>TypeError: not enough arguments for format string

哦!我们没有通过足够的参数格式字符串!如果你在上面的示例中,仔细观察你会发现它有两个% s的实例,所以将字符串插入,你必须通过相同数量的字符串!现在我们准备学习插入整数和浮点数。让我们来看看!

>>> my_string="%i + %i = %i"%(1,2,3)>>> my_string'1 + 2 = 3'>>> float_string="%f"%(1.23)>>> float_string'1.230000'>>> float_string2="%.2f"%(1.23)>>> float_string2'1.23'>>> float_string3="%.2f"%(1.237)>>> float_string3'1.24'

上面的第一个例子是显而易见的。我们创建一个字符串,接受三个参数传递。以防你没有搞懂了,不,Python实际上不做任何添加的第一个例子。对于第二个示例,我们通过在一个浮点数。注意,输出包括很多额外的0。我们不希望这样,所以我们告诉Python限制这两位小数第三例中(“% .2f”)。最后一个示例向您展示了Python会为你如果你通过做一些舍入的浮动超过两位小数。

现在,让我们看看会发生什么,如果我们把它坏数据:

>>> int_float_err="%i + %f"%("1","2.00")Traceback (most recent call last): File "<string>", line 1, in <fragment>TypeError: %d format: a number is required, not str

在这个例子中,我们通过两个字符串而不是一个整数和一个浮点数。这就提出了一个TypeError告诉我们,Python是期待一个数字。这是指不通过一个整数,所以让我们看看,修复问题:

>>> int_float_err="%i + %f"%(1,"2.00")Traceback (most recent call last): File "<string>", line 1, in <fragment>TypeError: float argument required, not str

不。我们得到同样的错误,但是不同的消息,告诉我们应该通过一个浮点数。如您所见,Python为我们提供了很好的信息出现了什么问题以及如何解决它。如果你固定的输入适当,那么你应该能够得到运行这个示例。

让我们转移到字符串格式化的新方法!

模板和新的字符串格式化方法

这个新方法实际上是在Python 2.4作为字符串模板,但增加了作为一个常规字符串方法通过格式方法在Python 2.6。所以它不是一个真正的新方法,新。不管怎样,让我们先从模板!

>>> print("%(lang)s is fun!"%{"lang":"Python"})Python is fun!

这可能看起来很奇怪,但基本上我们只是改变了我们%到%(lang)年代,这基本上是% s的一个变量。第二部分是叫Python字典,我们将在下一节中学习。基本上这是一个关键:值对,所以当Python看到关键的“郎”在字符串和字典传递的关键,它取代,键的值。让我们来看看一些样品:

>>> print("%(value)s%(value)s%(value)s !"%{"value":"SPAM"})SPAM SPAM SPAM !>>> print("%(x)i + %(y)i = %(z)i"%{"x":1,"y":2})Traceback (most recent call last): File "<string>", line 1, in <fragment>KeyError: 'z'>>> print("%(x)i + %(y)i = %(z)i"%{"x":1,"y":2,"z":3})1 + 2 = 3

在第一个示例中,您会注意到,我们只传递一个值,但是插入3倍!这是使用模板的优点之一。第二个例子中的一个问题,我们忘了传入一个关键,即“z”键。第三个例子矫正这个问题,显示了结果。现在让我们看看我们如何做一些类似于字符串的格式方法!

>>> "Python is as simple as {0}, {1}, {2}".format("a","b","c")'Python is as simple as a, b, c'>>> "Python is as simple as {1}, {0}, {2}".format("a","b","c")'Python is as simple as b, a, c'>>> xy={"x":0,"y":10}>>> print("Graph a point at where x={x} and y={y}".format(**xy))Graph a point at where x=0 and y=10

在前两个示例中,您可以看到如何通过定位项目。如果我们重新安排订单,我们得到一个稍微不同的输出。最后的示例使用一个字典像我们使用上面的模板。然而,我们必须提取词典使用两个星号来让它正常工作。

还有很多其他的事你可以去做字符串,如指定宽度,调整文本转换成不同的基地和更多。一定要看一看下面的一些参考资料获得更多信息。

  • Python对str的官方文档类型

  • 字符串格式化

  • 更多字符串格式化

  • Python 2。x文档unicode

首先,我们学习了如何创建字符串本身,那么我们继续这个话题的字符串连接。之后,我们看了一些字符串对象的方法给我们。

微信:yuxuans357

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值