Kurzusok
/
Python
Python
/
Tanterv
/
String-metódusok
St

String-metódusok ebben a kurzusban: Python

60 feladat

A(z) String-metódusok fogalomról

A str a Unicode-kódpontok változtathatatlan sorozata. Ez tartalmazhat betűket, diakritikus jeleket, pozicionáló karaktereket, számokat, pénznemszimbólumokat, emojit, írásjeleket, szóközt és sortörést, és még sok egyebet.

A stringek minden általános sorozatműveletet megvalósítanak, és bejárhatók a for item in <str> vagy a for index, item in enumerate(<str>) szintaxissal. Az egyes kódpontokra (1 hosszúságú stringek) balról egy 0-based index számmal, jobbról egy -1-based index számmal lehet hivatkozni.

A stringek összefűzhetők a <str> + <other str> vagy a <str>.join(<iterable>) használatával, és szétválaszthatók a <str>.split(<separator>) segítségével. Emellett számos további formázási és összeállítási lehetőséget is kínálnak.

A stringekkel való további munkához a Python rengeteg string metódust kínál: kereséshez, tisztításhoz, átalakításhoz, fordításhoz és sok más művelethez.

A leggyakrabban használt str metódusok közé tartozik többek között:

  • Előtagok/utótagok ellenőrzése a <str>.startswith(<substr>) és a <str>.endswith(<substr>) metódussal
  • A string kis- és nagybetűsségének megváltoztatása olyan metódusokkal, mint a <str>.title(), a <str>.upper()/<str>.lower() és a <str>.swapcase()
  • Karakterek eltávolítása egy string elejéről vagy végéről a <str>.strip(<chars>), a <str>.lstrip(<chars>) vagy a <str>.rstrip(<chars>) használatával
  • Részstringek cseréje a <str>.replace(<old>, <new>) metódussal

Mivel változtathatatlan, egy str objektum értéke a memóriában nem változhat; a metódusok, amelyek úgy tűnik, hogy módosítják a stringet, valójában annak a str objektumnak egy új másolatát vagy példányát adják vissza.

A <str>.endswith(<suffix>) True-t ad vissza, ha a string <suffix>-szel végződik, egyébként False-t.

>>> 'My heart breaks. 💔'.endswith('💔')
True

>>> 'cheerfulness'.endswith('ness')
True

# Punctuation is part of the string, so needs to be included in any endswith match.
>>> 'Do you want to 💃?'.endswith('💃')
False

>>> 'The quick brown fox jumped over the lazy dog.'.endswith('dog')
False

A <str>.title() feldolgoz egy stringet, és nagybetűssé teszi minden megtalált „szó” első „karakterét”. Pythonban ez nagyban függ a használt nyelvi kodektől, valamint attól, hogy az adott nyelv hogyan ábrázolja a szavakat és a karaktereket. Emellett egy nyelvhez vagy karakterkészlethez területi beállítások szabályai is érvényben lehetnek.

>>> man_in_hat_th = 'ผู้ชายใส่หมวก'
>>> man_in_hat_ru = 'мужчина в шляпе'
>>> man_in_hat_ko = '모자를 쓴 남자'
>>> man_in_hat_en = 'the man in the hat.'

>>> man_in_hat_th.title()
'ผู้ชายใส่หมวก'

>>> man_in_hat_ru.title()
'Мужчина В Шляпе'

>>> man_in_hat_ko.title()
'모자를 쓴 남자'

>> man_in_hat_en.title()
'The Man In The Hat.'

A <str>.strip(<chars>) a str egy másolatát adja vissza, amelyről eltávolította a vezető és záró <chars> karaktereket. A <chars>-ben megadott kódpontok nem előtagként vagy utótagként működnek: a kódpontok minden kombinációja eltávolításra kerül, a string mindkét végéről kiindulva. Ha a <chars> nincs megadva, a whitespace kódpontok minden kombinációja eltávolításra kerül. Ha csak a bal vagy csak a jobb oldalról szeretnél eltávolítani, a <str>.lstrip(<chars>) és a <str>.rstrip(<chars>) használható.

# This will remove "https://", because it can be formed from "/stph:". 
>>> 'https://unicode.org/emoji/'.strip('/stph:')
'unicode.org/emoji'

# Removal of all whitespace from both ends of the str.
>>> '   🐪🐪🐪🌟🐪🐪🐪   '.strip()
'🐪🐪🐪🌟🐪🐪🐪'

>>> justification = 'оправдание'
>>> justification.strip('еина')
'оправд'

# Prefix and suffix in one step.
>>> 'unaddressed'.strip('dnue')
'address'

>>> '  unaddressed  '.strip('dnue ')
'address'

A <str>.replace(<substring>, <replacement substring>) a string egy másolatát adja vissza, amelyben a <substring> minden előfordulása <replacement substring>-re van cserélve.

Az alábbi idézet Lewis Carroll The Hunting of the Snark című művéből származik.

# The Hunting of the Snark, by Lewis Carroll
>>> quote = '''
"Just the place for a Snark!" the Bellman cried,
   As he landed his crew with care;
Supporting each man on the top of the tide
   By a finger entwined in his hair.

"Just the place for a Snark! I have said it twice:
   That alone should encourage the crew.
Just the place for a Snark! I have said it thrice:
   What I tell you three times is true."
'''

>>> quote.replace('Snark', '🐲')
...
'\n"Just the place for a 🐲!" the Bellman cried,\n   As he landed his crew with care;\nSupporting each man on the top of the tide\n   By a finger entwined in his hair.\n\n"Just the place for a 🐲! I have said it twice:\n   That alone should encourage the crew.\nJust the place for a 🐲! I have said it thrice:\n   What I tell you three times is true."\n'

>>> 'bookkeeper'.replace('kk', 'k k')
'book keeper'

🌟Újdonság a Python 3.9-ben

A Python 3.9 két új string metódust vezet be, amelyekkel sokkal könnyebb az előtagok és utótagok eltávolítása.

A <str>.removeprefix(<substring>) az előtag nélküli stringet adja vissza (string[len(<substring>):]). Ha a <substring> nincs benne a stringben, az eredeti string egy másolatát adja vissza.

# removing a prefix
>>> 'TestHook'.removeprefix('Test')
'Hook'
>>> 'bookkeeper'.removeprefix('book')
'keeper'

A <str>.removesuffix(<substring>) az utótag nélküli stringet adja vissza (string[:-len(substring)]). Ha a <substring> nincs benne a stringben, az eredeti string egy másolatát adja vissza.

# removing a suffix
>>> 'TestHook'.removesuffix('Hook')
'Test'
>>> 'bookkeeper'.removesuffix('keeper')
'book'

További példákért és metódusokért az informális útmutató remek kiindulópont. A Python dokumentációjában a How to Unicode rengeteg részletet kínál a Unicode-ról, a kódolásról, a bájtokról és a Pythonban való stringkezelés egyéb technikai szempontjairól.

A Python a re modulon keresztül reguláris kifejezéseket is támogat, amelyeket egy későbbi fogalomban tárgyalunk majd.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) String-metódusok fogalmat

A gyakorlás zárolva

Oldj fel még 3 feladatot, hogy gyakorolhasd a(z) String-metódusok fogalmat