Python文字列の超詳細な使用Daquanの

オリジナルリンク: https://www.jianshu.com/u/8f2987e2f9fb

文字列の連結

実際のシーン:一緒に文字列にデータリスト

解決方法:str.join()メソッド

>>> li = ['cxk', 'cxk', 'kk', 'caibi']
>>> ''.join([str(i) for i in li])
'cxkcxkkkcaibi'

私たちは、あなたがメモリ空間を大幅に節約することができ、リストが大きい場合には、ジェネレータ式を使用することをお勧めします

>>> ''.join(str(i) for i in li)
'3cxkkkcaibi'

スプリットストリング区切り文字は、さまざまなが含まれています

実際のシーン:異なるシンボル・スプリッタ・フィールドに基づいて、文字列を分割し、異なるデリミタ複数を含む文字列

s = "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"

例えば1. Pythonのスプリット()メソッド、分割セパレータので処理時間:

>>> res = s.split(';')
>>> res
['ab', 'fd/ft|fs,f\tdf.fss*dfd', 'fs:uu}fsd']

だから我々は、マップの関数とすることができる文字列の区切り文字列セグメンテーションする必要があります!

>>> list(map(lambda x: x.split("|"), res))
[['ab'], ['fd/ft', 'fs,f\tdf.fss*dfd'], ['fs:uu}fsd']]

結果は、2つの次元のリストになって、私たちが望む結果は、1次元のリスト、どのように行うのですか?

結果を保存するために一時的なリストを作成します。

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> t = []
>>> list(map(lambda x: t.extend(x.split("|")), res))
[None, None, None]
>>> t
['ab', 'fd/ft', 'fs,f\tdf.fss*dfd', 'fs:uu}fsd']

結果は我々の期待に会いました!その後、セパレータの残りの処理を続け、操作がループを得るために、繰り返されます!

次のように最終的なコードです。

def my_split(s, ds):
    res = [s]

    for d in ds:
        t = []
        list(map(lambda x: t.extend(x.split(d)), res))
        res = t
    return res

文字列と文字列は、すべての着信以下の結果をデリミタ:

s = "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"
print(my_split(s, ";/|,.}:*\t"))
运行结果:['ab', 'fd', 'ft', 'fs', 'f', 'df', 'fss', 'dfd', 'fs', 'uu', 'fsd']

2.再モジュールスプリット()メソッド

また、分割()メソッドを提供してくれます)(再、一時間区切りの文字列にすることができます!

import re

s = "ab;fd/ft|fs,f\tdf.fss*dfd;fs:uu}fsd"
print(re.split('[;/|,.}:*\t]', s))

結果が一致している、それは非常にシンプルで、粗ではありません!

B列のかどうかを先頭や末尾の文字列の解釈
実際のシーン:たとえば、ディレクトリ内のファイルのシリーズがあります:
ここに画像を挿入説明
ユーザー権限でのすべての.txtファイルと実行可能ファイルの.pyプログラムを書きます

ソリューション:

文字列のstr.startswith()とstr.endswith()

そして、タプルを受け入れるの.pyファイルを終了.TXTを見つけます

>>> import os
>>> os.listdir(".")
['app', 'config', 'requirements.txt', 'run.py', '__pycache__', 'gunicorn.conf.py', 'chromedriver', 'login_after2.png', 'readme.txt', 'slide.png', 'test.py', 'logs', 'chrome-linux.zip', 'gunicorn.pid', 'asgi.py', 'chrome-linux']

>>> [name for name in os.listdir(".") if name.endswith((".txt", ".py"))]
['requirements.txt', 'run.py', 'gunicorn.conf.py', 'readme.txt', 'test.py', 'asgi.py']

中国の文字列フォーマット調整存在に応じて

実際のテキスト列:例えば、日付形式は「YYYY-MM-DD」で、ログファイル、中:

当社は、米国の日付フォーマット「YYYY / MM / DD」の日付を変更したい。例えば2019年6月12日2019年6月12日の形式に

ソリューション:再サブ()メソッドの使用は、置換文字列を実行します

キャプチャグループでの正規表現は、各パートの内容をキャプチャして、文字列の代わりのキャプチャそれぞれの調整グループの順序を交換してください!

コードは以下の通りであります:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:857662006 寻找有志同道合的小伙伴,
互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import re

with open("info.log", "r", encoding="utf-8") as f:
    file = f.read()

print(re.sub('(\d{4})-(\d{2})-(\d{2})', r'\2/\3/\1', file))

グループ1、2にデフォルトで左から右に、各グループのキャプチャ、その後に括弧を必要とし、...

次のパラメータは、1,2,3グループ1、2を、それぞれ、交換したい形式です...

結果は以下の通りであります:
ここに画像を挿入説明

文字列の左、右、中央揃え

ソリューション:

1.文字列str.ljust()、str.rjust()、 str.center() を中心とするために!
三つの方法上記の基本的な使用法:

>>> s = 'abc'
>>> s.ljust(20, '=')
'abc================='
>>> s.ljust(20)
'abc           '

すべての3つの方法が埋めるためにデフォルト値を設定することができます

2.ビルトイン形式()メソッドを使用し

>>> format(s, ">20")
'                 abc'
>>> format(s, "<20")
'abc                 '
>>> format(s, "^20")
'        abc         '

文字列内の不要な文字を削除します。

実際のケース:

[email protected]」:ユーザーが空白文字を入力する前と後の過剰をフィルタリング

「こんにちは世界ます\ r \ n」:テキストの編集は、「\ rを」でいくつかのウィンドウをフィルタリング

ユニコード合成シンボルテキスト除去(ピッチ):nǐhǎoMA

ソリューション:

文字列の両端を削除するにはstr.strip()、str.lstrip()、str.rstrip()メソッドを使用します

)(re.subでstr.replace()または定期的に使用してください

異なる複数の文字を同時に削除することができる文字列str.translate()メソッドを使用し

おすすめ

転載: blog.csdn.net/qdPython/article/details/102757612