1. 程式人生 > >LINUX學習筆記—sed

LINUX學習筆記—sed

字串也是序列的一種,所以序列中索引、切片、乘法、成員資格檢查、長度、最小值和最大值都適用於字串,但字串是不可變的,所以元素賦值以及切片賦值都是非法的,不能執行成功;
str1='I love fishc.com' str[:6]->'I love'(注意空格也算一個位置) str1[5]->'e'
字串的建立:
可以使用單引號和雙引號都可以;
var1='Hello world~' var2="Python runood"

字串格式化

字串的格式化主要有兩種方法,一種用format,另一種採用格式化符%

  1. format( )
    format( )方法接受位置引數和關鍵字引數,二者傳遞到一個replacement欄位。這個replacement欄位在字串內由大括號({})表示 ;
    '{0} love {a}. {b}' .format("I", a="Fishc", b="com”)->' I love Fishc.com'
  • 其中{0}與位置有關,稱為位置引數,而{a}、{b}相當於兩個標籤,這就是關鍵字引數。值得注意的是,位置引數和關鍵字引數一起使用時,位置引數必須在關鍵字引數之前,否則就會報錯。
    '{0}:{1:.2f}".format ("圓周率“, 3.14159)->'圓周率:3.14’
  • 位置引數{1}後多了冒號。在替換域中,冒號表示格式符號的開始,“.2"的意思是四捨五入到保留兩位小數點,而f的意思是定點數,所以按照格式化符號要求打印出了3.14.
  1. **格式化操作符: % **
  • %s : 格式化字串
  • %d:格式化整數
  • %c:格式化字元及其ASCII碼
  • %f:格式化浮點數字,可指定小數點後的精讀
  • %e:用科學計數法格式化浮點數
  • %o %x %e…
    ‘%c’ % 97 ->‘a’ print “My name is %s and weight is %d kg!” % (‘Zara’, 21) ->‘My name is Zara and weight is 21 kg!’
    ‘%f 用科學計數法表示為:%e’ % (149500000, 149500000) -> ‘149500000.000000用科學計數法表示為:1.495000e+08’`
    **格式化操作符的輔助指令 **
  • m. n :m是顯示的最小總寬度,n是小數點後的位數
  • -:結果左對齊
  • +:在正數前面顯示加號(+)
  • #:在八進位制數前面顯示’0o’, 在十六進位制數前面顯示‘0ox64或’0X64’
  • 0:顯示的數字前面填充’0’代替空格
    `’%5.1f’ % 27.658 ->‘27.7’
字串方法(最常用的)
  1. center (width):在兩邊新增填充字元(預設為空格,可手動更改)讓字串居中。
    “The middle by jimmy eat worlds".center(39, “*”)->’ *The middle by jimmy eat worlds*
  2. find (sub[, start[, end]])
    在字串中查詢子串。如果找到,就返回子串中的第一個字元的索引,否則返回-1.
    'with a moo-moo here, and a moo-moo there'.find('moo') ->7 title='Monty Python's flying circus' title.find('Zirquss')->-1
    find還可以指定查詢起點和終點,可選擇
    subject='$$$ get rich now!!! $$$' subject.find('$$$', 1)->20 subject.find ('!!!', 0, 16) ->-1
  3. join(sub)
    join是一個非常重要的字串方法,其作用與split相反,用於合併序列的元素。
    seq=['1', '2', '3', '4', '5'] sep='+' sep.join(seq) ->'1+2+3+4+5'
  4. split (sep=None, maxsplit=-1)
    與join一樣是一個非常重要的字串方法,其作用與join相反,用於將字串拆分為序列。
    `‘1+2+3+4+5’.split(’+’) ->[1, 2, 3, 4, 5]
    ‘/usr/bin/env’ .split(’/’) ->[’ ', ‘usr’, ‘bin’, ‘env’]
  5. lower( ):返回字串的小寫版本
    Trondheim Hammer Dance' .lower( )->trondheim hammer dance name= 'Gumby' names=['gumby', 'smith', 'jones'] if name.lower in names: print ('Found it !') -> 'Found it'
    其他相關方法還有:islower/istitile/isupper/translate、、、
  6. replace(old, new[, count]):指定子串都替換為另一個字串,並返回替換後的結果。
    'This is a test'. replace('is', 'eez') ->'Theez ezz a test'
  7. translate (table)
    與replace一樣是替換字串,但前者只能單字元替換,而translate可以替換多個
    table =str.maketrans('cs' , 'kz', ' ') 'this is an incredible test' .translate (table) ->thizizaninkredibletezt'
  8. strip([chars]):將字串開頭和末尾的空白(但不包括中間的空白)刪除,並返回刪除後的結果。
    `’ internal whitespace is kept ‘.strip( ) ->‘internal whitespace is kept’
    ‘###SPAM#for #everyone!!!###’ .strip (’ #!’) ->‘SPAM # for # everyone’
  9. title () :返回標題化(所有的單詞都是以大寫開始,其餘字母為小寫)的字串
  10. 判斷字串是否滿足特定條件
    有一些字串方法以is打頭,如isspace/isdigit/isupper, 它們判斷字串是否具有特定的性質(如包含字元全為空白、數字、大寫)。如果字串滿足特定條件,這些方法就返回True,否則False.
    isalnum/isalpha/isdecimal/isdigit/islower/isnumeric(是否包含數字字元)/isspace/istitle(是否至少包含一個區分大小寫的字元)/isupper