菜单

金沙国际python基础知识计算

2019年4月16日 - 金沙编程资讯

   
一次坑爹的小bug。读取一段文字(编码utf-八),想替换掉空格,str_replace(”
“..)、preg_replace(“/\s/”..)都不起功用。

十陆进制值 一. + U昂科威L 中+号表示空格 %二B

python基础知识计算

金沙国际 1

python有段日子没用了,实在是惭愧啊,宅男前天调整开头对python基础知识重新开始展览总计,以慰自心。

一.python概念

  1. Python是享誉的“龟叔”吉多 van
    Rossum在一九八6年圣诞节时期,为了消磨无聊的圣诞节而编辑的一个编制程序语言。

  2. python定位“优雅”,“简单”,“明确”

二.python安装

三.python基础

一.输入输出

输入输出input/output,简称I/O

输出:

print语句也足以跟上多少个字符串,用逗号“,”隔离,就足以连成1串输出,逗号在print语句里面看做空格,print能够输出整数和张开演算输出结果

输入:

raw_input:输入值并存放到变量里面

变量相信不须要多说了

二.数据类型

整数:

Python可以拍卖任意大小的整数,当然包涵负整数,在先后中的表示方法和数学上的写法一模同样,例如:1100-80800,等等。

处理器由于接纳2进制,所以,有时候用十6进制表示整数相比较便于,十陆进制用0x前缀和0-9,a-f表示,例如:0xff000xa5b4c3d2,等等。

浮点数:

浮点数也正是小数,之所以称为浮点数,是因为依照科学记数法表示时,2个浮点数的小数点地点是可变的,比如,1.二三x109和12.3×108是十三分的。浮点数能够用数学写法,如1.233.14-9.01,等等。可是对于非常大或十分小的浮点数,就非得用科学计数法表示,把10用e代替,1.二三x拾9就是1.23e9,或者12.3e8,0.000012能够写成1.2e-5,等等。

平头和浮点数在Computer内部存储的方法是例外的,整数运算长久是准确的(除法难道也是精确的?是的!),而浮点数运算则只怕会有肆舍5入的标称误差。

字符串:

字符串是以”或””括起来的即兴文本,比如'abc'"xyz"等等。请留意,”或””自个儿只是1种表示方法,不是字符串的壹部分,由此,字符串'abc'只有abc这3个字符。如果'我也是一个字符,这就可以用””括起来,比如"I'm OK"带有的字符是I'm,空格,OK这6个字符。

假诺字符串内部既涵盖’又饱含”如何是好?能够用转义字符\来标记,比如:转义字符\能够转义繁多字符,比如\n表示换行,\t表示制表符,字符\自个儿也要转义,所以\\表示的字符正是\

借使字符串里面有繁多字符都急需转义,就必要加好多\,为了简化,Python还同意用r”表示”内部的字符串暗许不转义

要是字符串内部有多数换行,用\n写在1行里不佳阅读,为了简化,Python允许用”’…”’的格式表示多行内容。

布尔值:

布尔值和布尔代数的意味一点差异也没有。布尔值只有True也许False二种值,python能够用True
或 False表示布尔值,注意分寸写,也得以透过布尔运算,比如:

>>> True

True

>>> False

False

>>> 3 > 2

True

>>> 3 > 5

False

布尔值能够用and or not
来运算,and是与运算,都是True才会是True,or是或运算,有1个True就为True,not是单目运算符,表示非运算True变False,False变True。

布尔值一般用在规范推断中

空值:

空值是Python里二个破例的值,用None表示。None无法知晓为0,因为0是有意义的,而None是六个非同小可的空值。

python还有列表,元组,字典,还有自定义数据类型,前边1壹整理道来

变量:

高低写英文字母,数字,_下划线且不能以数字开首,能够表示各样数据类型

动态语言:变量本人类型不牢固的名称叫动态语言,反之正是静态语言,如java,评释时必须内定项目

a=’aaa’

意味着在内部存款和储蓄器中创建aaa字符串,在内部存款和储蓄器中开创a变量,并将a变量指向aaa

a=b

意味着将a变量指向b变量的值

常量:

不能变的变量,例如PI,python中并未有编写制定表示常量无法变,1般习惯用大写字母来表示常量

三.字符串和编码

字符串是壹种数据类型,字符串有三个主题材料就是编码难点,Computer只可以处理数字,要拍卖公事,必须将文件用数字来代表,那样就有了编码,而Computer是由英国人表明的,英文能够用四个字节表示,最早唯有1二十六个字符被编码到Computer,那几个编码表称为ASCII码,但处理汉语二个字节不够,至少须求五个字节,而且还不能够和ASCII码冲突,所以,中华夏族民共和国制定了GB231贰码

满世界语言那么多,各国有各国的正式,不可制止的会有冲突,unicode就那样产生了,unicode平日是八个字节,相当偏僻的字才用越多字节,ASCII码前边补0正是unicode码了

用unicode码也有毛病,即便联合用unicode编码乱码难题消除了,可是占用空间大了,那样就有了可变长编码utf-8

utf-捌将三个unicode字符依据区别数字大作者码成一-伍个字节,常用的英文字母编码为三个字节,汉字经常几个字节,很面生的字符才会编码成4-多少个字节,如若用于大气英文,utf-八能够节约数不胜数空间。UTF-八还二个便宜正是ASCII码实际能够当作utf-捌的一片段,多量支撑ASCII码的野史遗留软件能够在utf-8编码下持续工作。

搞掌握了ASCII、Unicode和UTF-八的关联,我们就足以计算一下现行反革命计算机连串通用的字符编码职业章程:

在计算机内部存款和储蓄器中,统一运用Unicode编码,当供给保留到硬盘或许须要传输的时候,就转变为UTF-八编码。

用记事本编辑的时候,从文件读取的UTF-8字符被更动为Unicode字符到内部存款和储蓄器里,编辑达成后,保存的时候再把Unicode调换为UTF-八保存到文件

浏览网页的时候,服务器会把动态变化的Unicode内容调换为UTF-八再传输到浏览器,所以您见到好些个网页的源码上会有近似<meta
charset=”UTF-八” />的音讯,表示该网页正是用的UTF-八编码。

4.python字符串

python诞生比unicode早,所以最早的python只协理ASCII码,字母和数字对应,python提供了ord()和chr()函数将字母和相应的数字兑换,python后来加多了对unicode辅助,unicode字符串代表u’…’,’…’可以当作utf-八编码可能ASCII编码,可是u’…’只可以当作unicode编码,英文表示的unicode编码和utf-八编码同样,可是占用的空中不一样,而中文字符调换后一个unicode字符将产生八个utf-八字符,len()函数重回字符串长度,将utf-八字符调换为unicode字符,用decode(‘utf-⑧’),python源码也是2个文本文件,1般保存为utf-八,#coding
utf-8

5.格式化

最普遍的是出口格式化的字符串,python的格式化和c语言一致,%s用字符串替换,%d用整数替换,即便唯有贰个%?,括号能够省略,

大规模的占位符:

%s 字符串

%d整数

%f 浮点数

%x 十陆进制整数

纪事:格式化整数和浮点数能够钦定是不是补0和整数和小数的位数

>>>'%2d-%02d'%(3,1)'3-01'>>>'%.2f'%3.1415926'3.14'

假定您不分明用什么,%s能够将其余数据类型调换为字符串

>>>'Age:%s.Gender:%s'%(25,True)'Age:25.Gender:True'

对于unicode字符,用法完全一样,但最佳有限协助替换的字符串也是unicode字符串

>>>u'Hi,%s'%u'Michael'u'Hi,Michael'

若果字符串的%也是三个司空眼惯字符,那就要求转义,%%表示%

待续。。。

python有段时间没用了,实在是惭愧啊,宅男明日调节初阶对python基础知识重新开始展览计算,以慰自心。
一.python概念 Pytho…

本章目录


字符串能够说是具有产生语言中采纳最常见的数据类型,Python也不例外。而拍卖字符串,首先需求注意的正是编码难题。

<?php

// 替换<p>后4个空格
$str = file_get_contents("http://m.ts.cn/new/99cms_ts/api.php?s=/News/getNewsInfoTmp/Nid/51089");
$str = str_replace(" ", "-", $str);
$str = preg_replace("/\s/", "-", $str);
echo $str;  // 不起作用
  1. 空格 U凯雷德L中的空格能够用+号也许编码 %20
  2. / 分隔目录和子目录 %二F
  3. ? 分隔实际的 ULX570L 和参数 %三F
  4. % 指定尤其字符 %25
  5. # 表示书签 %二叁
  6. & U路虎极光L 中钦点的参数间的相间符 %二陆
  7. = U宝马X伍L 中钦点参数的值 %3D

字符编码

Computer的精神实际上正是由0和一重组的,所以说不论粤语照旧英文字符串,最后都要调换为数字。
最早只有1二几个字符被编码到Computer里,也正是大大小小写英文字母、数字和一部分符号,那几个编码表被称作ASCII编码。
不过要拍卖汉语明显二个字节是不够的,至少须求四个字节,而且还无法和ASCII编码争辨,所以,中中原人民共和国制定了GB231二编码,用来把汉语编进去。
后来啊,为了处理愈多的语言,Unicode应运而生。Unicode把具有语言都统一到一套编码里,那样就不会再有乱码难点了。
Python二.x多级正是用的ASCII编码,而Python三.x就起来应用unicode了,这样汉语呈现难点就有了十分大的立异。那里打字与印刷了一晃windows下Python三.6的各类编码:

金沙国际 2

Python编码.png

能够看来,基本统一为了utf-八。那么什么样是utf-八呢?utf-八其实是贰个可变长编码。它把一个Unicode字符依据不一致的数字大笔者码成一-五个字节,常用的英文字母被编码成三个字节,汉字平日是贰个字节,唯有很生分的字符才会被编码成四-多少个字节。假使你要传输的文书包括大量英文字符,用UTF-捌编码就能节约空间:

字符 ASCII Unicode UTF-8
A 01000001 00000000 01000001 01000001
x 01001110 00101101 11100100 10111000 10101101

从地点的报表还足以窥见,UTF-八编码有贰个附加的裨益,正是ASCII编码实际上能够被看作是UTF-八编码的一片段,所以,多量只帮忙ASCII编码的历史遗留软件能够在UTF-八编码下一而再做事。
在微型计算机内存中,统一运用Unicode编码,当须要保留到硬盘也许要求传输的时候,就退换为UTF-8编码。
用记事本编辑的时候,从文件读取的UTF-八字符被改动为Unicode字符到内部存款和储蓄器里,编辑实现后,保存的时候再把Unicode调换为UTF-八保存到文件:

金沙国际 3

image.png

  不能够,将替换不了的空格ord()下才看出,那个utf-八空格相比极度。ASCII
1玖四 + 160出去的。

涸泽而渔的不贰法门:
replace() 方法假使一向用str.replace(“-“,”!”) 只会交替第三个门户差不离的字符.
而str.replace(/\-/g,”!”)则能够轮换掉全数非常的字符(g为大局标识)。
replace()
js中替换字符变量如下:

字符串

字符串正是用单引号(‘)大概双引号(“”)包裹起来的文字,在Python风格规范里引入二个模块使用1种标记作为字符串表示。在字符串内足以运用别的一种引号,
以幸免在字符串中央银行使。
例如:

print('Why are you hiding your eyes?')
print("I'm scared of lint errors.")
print('"Good!" thought a happy Python reviewer.')

结果为:

金沙国际 4

String.png

为此说,除非想在字符串内含有单引号也许双引号,每贰个Python文件最棒利用同1种标识。
对此单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码调换为对应的字符:

金沙国际 5

ord和chr.png

若是知道字符的整数编码,还足以用十6进制这么写str(unicode格局):

金沙国际 6

uniode中文.png

固然要在网络上传输,或者封存到磁盘上,就供给把str变为以字节为单位的bytes。Python对bytes类型的数目用带b前缀的单引号或双引号表示:

var = b"ABC"

要留心区分’ABC’和b’ABC’,前者是str,后者就算内容展现得和前者同样,但bytes的每种字符都只占用2个字节。
以Unicode表示的str通过encode()方法能够编码为钦命的bytes,例如:

金沙国际 7

encode.png

纯英文的str能够用ASCII编码为bytes,内容是1模同样的,含有普通话的str能够用UTF-八编码为bytes。含有汉语的str不恐怕用ASCII编码,因为粤语编码的限量超越了ASCII编码的限量,Python会报错。
扭转,从bytes到str能够用decode方法,原理和操作都以一样的,不再赘言了。
聊起底,能够看下len方法,len是length的缩写,翻译过来正是总计str或许bytes的字符字节数,例如:

金沙国际 8

len.png

看得出,壹当中文字符经过UTF-八编码后一般会占领二个字节,而一个英文字符只占用三个字节。
在操作字符串时,我们平日遇上str和bytes的交互调换。为了制止乱码难点,应当始终百折不挠运用UTF-8编码对str和bytes实行转变。
还有其余壹些常用的点子,如spli(分割),
join(拼接),replace(替换),upper(大写),lower(小写),strip(去除两端空格),lstrip(去除左端空格),rstrip(去除右端空格)等,用法都比较轻松,可参照源码调用就能够。

<?php

// 替换<p>后4个空格
$str = file_get_contents("http://m.ts.cn/new/99cms_ts/api.php?s=/News/getNewsInfoTmp/Nid/51089");
$str = str_replace(chr(194) . chr(160), "-", $str);  // 解决方法
echo $str;  // OK

 data2=data2.replace(/\%/g,”%25″);
 data2=data2.replace(/\#/g,”%23″);
 data2=data2.replace(/\&/g,”%26″);

字符串格式化

  1. 字符串格式化正是在内定地点先放1个占位符,然后用变量来替换,那样就足以以同等的格式输出不一样的内容。
    最简便易行的案例如下图所示:
![](https://upload-images.jianshu.io/upload_images/6879662-35e9e9fc9e8b349f.png)

字符串格式化.png



其中,占位符常用的有:
占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

再有为数不少其余占位符,不太常用,供给的时候再去查就好了。
除此以外,借使不鲜明,能够应用字符串占位符,因为其余项目都转载为字符串。

  1. 乐于助人说法是%号的章程已经过时了,用format方法来操作字符串格式化更适于。
    用作2个刚入门的学习者,未有本事去分别那两者的好坏,相对来讲,个人照旧喜欢format方式多1些,以为更专业。
    format格局的功底用法正是用{0},{一}…来代替站位符,即使用{}代表选取默许顺序,例如:
![](https://upload-images.jianshu.io/upload_images/6879662-9ba20d5a74127547.png)

format格式化.png



另外,还有一些比较详细的用法:



![](https://upload-images.jianshu.io/upload_images/6879662-a9310b98109d7212.png)

format格式化进阶.png

  实验下这些空格。

其余部分资料。。。仅供参考。。。

<?php

// utf-8无bom文件下,四个空格
$s1 = chr(194) . chr(160);
$s2 = chr(32);
$s3 = " ";
$s4 = " ";  // 全角空格
$s = $s1 . $s2 . $s3 . $s4;

// 判断
$r  = '';
if ($s1 == $s2) $r .= 1;
if ($s1 == $s3) $r .= 2;
if ($s1 == $s4) $r .= 3;
if ($s2 == $s3) $r .= 4;
if ($s2 == $s4) $r .= 5;
if ($s3 == $s4) $r .= 6;

// 结果
echo $s, "#####", $r, "####", str_replace(" ", "-", $s), "####", preg_replace("/\s/", "-", $s);

在接纳url实行参数传递时,平常会传送1些中文名(或包涵特殊字符)的参数或U瑞虎L地址,在后台处理时会发生转移错误。在多少传递页面使用GB231贰,而在接收页面使用UTF8,那样接收到的参数就大概会与原来发生分歧样。使用服务器端的urlEncode函数编码的U路虎极光L,与利用客户端java的encodeUKugaI函数编码的U奥迪Q7L,结果就不等同。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图