[067]python筆記:字符串,內建函數,Unicode

測試代碼

3-6行:

先導入一string模塊,並且定義兩個字串符,以便往後判斷

8-12行:

讓使用者輸入信息,且讓長度2以上的字符串才能通過檢驗

13-14行:

如果第一字串符不是字母或是下滑線,那麼在輸出結果,並且退出

15-16行:

循環的檢查剩下的字符串

17-21行:

假使剩下的字符串不是字母、下滑線、數字組成的,那麼就輸出結果,且退出,

否則就是輸出是的結果


核心的提示:性能

在有些程式碼中,重複操作作為參數放進循環是很低效的,舉例來說

while i< len(myString):

    print ‘character %d is:’,myString[i]


length=len(myString)

while i<length:

   print ‘character %d is:’,myString[i]

兩者效率會有差別,後者更為高效

因此,把此邏輯借鑒到第17行,可以更改為

alphnums=alpha +nums

for otherChar in myInput[1:]:

   if otherChar not in alphnums:


連接符(+)

重複操作符(*)



6.4只適用於字符串的操作符

有許多字串格式化符號,種類繁多,因此做幾個重點介紹

%c:轉換成字符(ASCII碼值,或長度唯一的字符)

%s:優先用str()函數進行字符串轉換

%d:轉成有符號十進制數


%#x:以16進位輸出

%#o:以8進位輸出

%.2f:以浮點數輸出


接著討論,用字典化顯示操作符

>>> 'There are %(howmany)d %(noun)s ' %{'howmany':3,'noun':'idiots'}

'There are 3 idiots '


6.5內建函數

著名的是min,max,enumerates,zip

>>> a='apple'

>>> for i,t in enumerate(a):

print (i,t)

0 a

1 p

2 p

3 l

4 e

接下來是,chr(),ord(),unichr(),

chr()與unichr()都是類似的,輸入數字,然後輸出字串

但ord()則是,輸入字串,輸出數字


6.6字符串內建函數

string.capitalize():把字符串的第一個字符大寫

string.center(width):把一字符串居中,並使用空格填充到長度width的新字符

string.count(str,beg=0,end=len(string)):在指定的string長度中,搜尋str出現的次數

string.isdigit():至少包含數字就返回True

string.islower():在字符中的字母,得全部都要是小寫才會返回True

string.isalpha():所有字符都是字母就返回True

string.isdecimal():全部的數字中都是十進位制就反回True


6.8Unicode

我查了wiki的定義:Unicode(中文:萬國碼、國際碼、統一碼、單一碼)是電腦科學領域裡的一項業界標準。

它对世界上大部分的文字系統進行了整理、編碼,使得電腦可以用更為簡單的方式來呈現和處理文字。

在python中,unicode與ASCII字符串沒啥兩樣,前者通常會在字符串前加入’u’已表示,而後者通常就是默認形式

在此,有一實際流程應用,

就是,

unicode字符串—>UTF-8編碼—>寫入一文件

更詳細來說,就是一開始會先decode字符串成unicode型式,

再把這個unicode型式的編碼,encode成其他的編碼,然後寫入一文件


此段程式碼會創建unicode.txt,內容是Hello world!

另外,在使用unicode時,要很小心一些原則,以下

1.程序中出現字符串一定要加個前綴u

2.不要用到str()函數,而是用unicode()代替

3.不到必要時,不要在你的程序編碼中,編解Unicode字符,只要在寫入文件時,再加入encode()就好


最後,是在使用unicode的一些教訓

1.在開發產品時,如果要做其他語言的應用話,那麼一開始就要注意unicode的使用,否則到後頭會很麻煩

2.在原碼中,到處使用str()與chr()函數,但最後還是得換成unicod()函數

3.不能確定所有輔助系統都支持Unicode,得在一開始就做確認

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 为何叫做 shell ? shell prompt(PS1) 与 Carriage Return(CR) 的关系?...
    Zero___阅读 3,187评论 3 49
  • 前言 什么是CSS预处理器 定义:CSS预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为CSS增...
    SA_Arthur阅读 3,144评论 0 18
  • 大多数的开发者在使用Java或C#等基于类的语言的过程中学会了面向对象编程。由于JavaScript没有对类的正式...
    WanLum阅读 598评论 0 4
  • 這篇是之前預告過的 Boost C++ Libraries 系列文章的第一篇。所介紹的,是在 Boost 裡用來格...
    依杖听江声阅读 1,312评论 0 0
  • 我們已經在第1章討論過,在javascript中,函數其實就是對象,使函數不同意其他對象的決定性特點是函數存在一個...
    WanLum阅读 325评论 2 1