Python實驗四:文本處理和文件內容操作

#1.需要將一個字符串分割爲多個字段,但是分隔符(還有周圍的空格)並不是固定的。
#string 對象的 split() 方法只適應於非常簡單的字符串分割情形
#它並不允許有多個分隔符或者是分隔符周圍不確定的空格。
# 當你需要更加靈活的切割字符串的時候,最好使用 re.split() 方法
import re
line = 'aaa bbb ccc;ddd   eee,fff'
print(line)
r1=re.split(r';',line)#單字符切割
print(r1)
# 兩個字符以上切割 【】
r2=re.split(r'[;,]',line)
print(r2)
# 所有空白字符切割
r3 =re.split(r'[;,\s]',line)
print(r3)
# 使用括號捕獲分組,默認保留分割符
r4 =re.split(r'([;])',line)
print(r4)
# 不想保留分隔符,以(?:...)的形式指定
r5 = re.split(r'(?:[;])',line)
print(r5)

aaa bbb ccc;ddd   eee,fff
['aaa bbb ccc', 'ddd   eee,fff']
['aaa bbb ccc', 'ddd   eee', 'fff']
['aaa', 'bbb', 'ccc', 'ddd', '', '', 'eee', 'fff']
['aaa bbb ccc', ';', 'ddd   eee,fff']
['aaa bbb ccc', 'ddd   eee,fff']

描述

startswith()函數是Python的字符串函數。startswitch()用於檢測字符串是否以指定字符串開頭。如果是則返回True,否則返回False.

  • 語法及參數
str.startswith(str2)
名稱 含義 備註
str 待檢測的字符串
str2 檢測str2字符串是否是str字符串的開頭 不可省略的參數

舉例

    >>> pro.startswith("Chi")
    True
    >>> pro.startswith("hi")
    False
# 2.需要通過指定的文本模式去檢查字符串的開頭或者結尾,
#   比如文件名後綴,URL Scheme等等。
#   檢查字符串開頭或結尾的一個簡單方法是使用 str.startswith() 
#   或者是 str.endswith() 方法

filename = 'list.txt'
a1=filename.endswith('.txt')
a2=filename.startswith('list')
a3=filename.startswith('lisp')
print(a1,a2,a3)
True True False

3.在字符串中搜索和匹配指定的文本模式;對於簡單的字面模式,直接使用 str.replace() 方法即可;
對於複雜的模式,請使用 re 模塊中的 sub() 函數。
爲了說明這個,假設想將形式爲 11/27/2012 的日期字符串改成 2012-11-27。

re.sub的各個參數的詳細解釋

re.sub共有五個參數。

其中三個必選參數:pattern, repl, string

兩個可選參數:count, flags

https://blog.csdn.net/qq_43088815/article/details/90214217

https://blog.csdn.net/weixin_30454481/article/details/96662513

inputStr = '11/27/2012'
re.sub(r'(\d+)/(\d+)/(\d+)', r'\3-\1-\2', inputStr)

'2012-11-27'
# 4.需要以忽略大小寫的方式搜索與替換文本字符串,
#   爲了在文本操作時忽略大小寫
#   需要在使用 re 模塊的時候給這些操作提供 re.IGNORECASE 標誌參數
text = 'UPPER PYTHON, lower python, Mixed Python'
def matchcase(word):
    def replace(m):
        text = m.group()
        if text.isupper():
            return word.upper()
        elif text.islower():
              return word.lower()
        elif text[0].isupper():
            return word.capitalize()
        else:
            return word
    return replace
re.sub('python', matchcase('snake'), text, flags=re.IGNORECASE)
'UPPER SNAKE, lower snake, Mixed Snake'
#5.想去掉文本字符串開頭,結尾或者中間不想要的字符,比如空白。
#  strip() 方法能用於刪除開始或結尾的字符。
#   #lstrip() 和 rstrip() 分別從左和從右執行刪除操作
text = 'UPPER SNAKE, lower snake, Mixed Snake'
a = re.sub('python', matchcase('snake'), text, flags=re.IGNORECASE)
print(a)


s = 'a hello world ! a';
l =s.lstrip('a ')
print(l)
r = s.rstrip('a')
print(r)
s1 = s.strip('a')
print(s1)
UPPER SNAKE, lower snake, Mixed Snake
hello world ! a
a hello world ! 
 hello world ! 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章