Chapter 4 Strings¶
Keynote¶
4.1 What are Strings? (Strings áááŻáᏠááŹáá˛?)¶
-
Python string áááŻáᏠUnicode characters áá˝áąááᯠá áŻá ááşá¸ááŹá¸ááźááşá¸ (Collection) ááźá áşááŤáááşá
-
Python strings áá˝áąááᯠsingle (' '), double (" ") áááŻáˇáááŻááş triple (''' ''' or """ """) quotes áá˝áąááźáŹá¸áá˛áážáŹ áááˇáşááąá¸áááŻáˇ áááŤáááşá
Handling Special Characters in Strings
String áá
áşááŻáá˛áážáŹ ' á " (áááŻáˇáááŻááş) \ áááŻááťááŻá¸ Characters áá˝áą ááŤááŹáá˛áˇáááş áĄáąáŹááşááŤáááşá¸áááşá¸ (á) ááťááŻá¸áá˛áˇ ááááşá¸áááşá¸áááŻááşááŤáááş -
- Escape Sequence: áĄá˛áᎠCharacters áá˝áąáá˛áˇ áážáąáˇáážáŹ
\(backslash) ááśááźáŽá¸ Escape ááŻááşááąá¸áááşá¸ááŤá - Raw String: String áá˛áˇ áĄáážáąáˇááŻáśá¸áážáŹ
ráááˇáşááąá¸ááźáŽá¸ ááŤá raw string ááźá áşáááşáááŻáˇ áááşáážááşááąá¸áá˛áˇáááşá¸ááŤá
# (a) Quotes áá˝áąááᯠescape ááŻááşáááŻáˇ Backslash ááŻáśá¸ááźááşá¸
msg_escape = 'He said, \'Python With Joe.\''
print(msg_escape)
# Output: He said, 'Python With Joe.'
# (b) Raw String (r prefix) ááᯠááŻáśá¸ááźááşá¸
# Backslashes áá˝áą áĄááťáŹá¸ááźáŽá¸ááŤáá˛áˇáĄá፠(áĽááᏠ- file paths áááŻáˇáááŻááş regex) áĄááŻáśá¸áááşááŤáááş
path = r"C:\Users\Name\Documents"
print(path)
# Output: C:\Users\Name\Documents
Creating Multiline Strings
Multiline strings (á áŹááźáąáŹááşá¸ááťáŹá¸á á˝áŹááŤááąáŹ á áŹááŹá¸ááťáŹá¸) ááᯠáĄáąáŹááşááŤáááşá¸áááşá¸ (á) ááťááŻá¸áá˛áˇ áááşááŽá¸áááŻááşááŤáááş -
- Using Backslash (
\): ááąáŹááşááŻáśá¸á áŹááźáąáŹááşá¸ááá˝á˛áááş ááťááşáá˛áˇá áŹááźáąáŹááşá¸áá˝áąáá˛áˇ áĄááŻáśá¸áážáŹ\(backslash) áááˇáşááąá¸áááŤáááşá - Triple Quotes:
"""..."""(áááŻáˇáááŻááş)'''...'''ááźáŹá¸áá˛áážáŹ ááąá¸ááŹá¸ááźááşá¸ááźá áşááŤáááşá - Parentheses:
()ááźáŹá¸áá˛áážáŹ String áá˝áąááᯠáá˝á˛ááąá¸ááźáŽá¸ áááşááąá¸áááşá¸ááźá áşááŤáááş (Implicit string concatenation)á
# Method 1: Backslash (\) ááᯠáĄááŻáśá¸ááźáŻááźááşá¸
# Note: Backslash ááąáŹááşáážáŹ space áááŤáĄáąáŹááş áááááŹá¸ááŤ
msg1 = 'one msg ' \
'another msg'
# Method 2: Triple Quotes
# ááŽáááşá¸á Newline characters áá˝áąáááŻá፠string áá˛áážáŹ áááťááşááá˝ááş ááááşá¸ááąá¸ááŤáááş
msg2 = """one msg
another msg"""
# Method 3: Parentheses () ááᯠáĄááŻáśá¸ááźáŻááźááşá¸
# Code ááᯠáááˇáşáážááşá¸áááşáááşááťááşáá˛áˇáĄá፠ááŽáááşá¸ááᯠáĄááŻáśá¸ááťáŹá¸ááźááŤáááş
msg3 = ('one msg '
'another msg')
4.2 Accessing String Elements¶
- String elements (String áá˛áážáŹááŤáá˛áˇ á áŹááŻáśá¸áá áşááŻáśá¸ááťááşá¸á áŽ) ááᯠIndex value áĄááŻáśá¸ááźáŻááźáŽá¸ áážááşá¸áá°áááŻáˇáááŤáááşá Index á 0 áááą á áááşááŤáááşá
- Negative index value (áĄáážáŻááşááášáááŹááź index) áááŻáááşá¸ ááŻáśá¸áá˝ááˇáşááźáŻááŤáááşá ááąáŹááşááŻáśá¸ Character ááᯠIndex -1 áááŻáˇ áááşáážááşááŤáááşá
4.2.1 Visualizing Indices¶
Positive áá˛áˇ Negative indices áááşá
ááşááŻáśááᯠ"PYTHON" áááŻáá˛áˇ String ááąá¸áá˛áˇ áĽáááŹááąá¸ááźáŽá¸ áĄáąáŹááşááŤáááŹá¸áážáŹ ááźááŹá¸ááŤáááş -
| Character | P | Y | T | H | O | N |
|---|---|---|---|---|---|---|
| Positive Index | 0 | 1 | 2 | 3 | 4 | 5 |
| Negative Index | -6 | -5 | -4 | -3 | -2 | -1 |
s = "PYTHON"
# Accessing first character (áááááŻáśá¸ character ááᯠáá°ááźááşá¸)
print(s[0]) # Output: P
print(s[-6]) # Output: P
# Accessing last character (ááąáŹááşááŻáśá¸ character ááᯠáá°ááźááşá¸)
print(s[5]) # Output: N
print(s[-1]) # Output: N
4.2.2 String Slicing¶
String áá
áşááŻáá˛áááą sub-string (áĄáááŻááşá¸áĄá
) áá
áşááŻááᯠáááŻááťááşáááş [start : end] áááŻáá˛áˇ syntax áááŻááŻáśá¸ááźáŽá¸ ááźááşááŻááş (Slice) áááŻáˇáááŤáááşá
Common Slicing Patterns (áĄááŻáśá¸ááťáŹá¸ááąáŹ ááŻáśá áśááťáŹá¸)
| Syntax | Description |
|---|---|
s[start : end] |
start áááą end - 1 áĄáá áá°ááŤáááşá |
s[start :] |
start áááą String áá˛áˇ áĄááŻáśá¸áá áá°ááŤáááşá |
s[: end] |
áĄá áááą end - 1 áĄáá áá°ááŤáááşá |
s[-start :] |
-start (ááŤáááşáááş) áááą áĄááŻáśá¸áá áá°ááŤáááşá |
s[: -end] |
áĄá áááą -end - 1 áĄáá áá°ááŤáááşá |
Handling Out-of-Bounds Indices
Slicing áá˛áˇ áĄááąá¸ááźáŽá¸áá˛áˇ áĄáŹá¸ááŹááťááşáá áşááŻáááąáŹáˇ String áĄáážááşáááşááťáąáŹáşáá˝ááşááąáá˛áˇ Indices áá˝áąááᯠáááŻááşáá˝ááşááŻáśááŤáá˛á
Slicing vs. Direct Indexing
- Direct Indexing (
msg[100]): ááááşáááŻáˇ Index á áĄáááşá¸ááźáŽá¸ááąáááş (ááážááá˛áˇááąááŹááźá áşááąáááş) Error áááşááŤáááşá - Slicing (
msg[3:100]): áá°áˇáááŻááąáŹáˇ Error ááááşáĄáąáŹááş ááźáąááźáąáááşáááş ááźáąáážááşá¸ááąá¸ááŤáááşá String ááŻáśá¸áá˛áˇáĄáááᲠáá°ááźáŽá¸ áĄáááşááźáąááźáą Return ááźááşááąá¸ááŤáááşá
msg = 'Rafting'
# Slicing with a large index (Safe - á
áááşááťáááŤáááş)
print(msg[3:100])
# Output: 'ting' ('t' áááą áĄááŻáśá¸áááᲠáá°áá˝áŹá¸ááŤáááş)
# Direct indexing with a large index (Unsafe - áĄáášáááŹááşáážáááŤáááş)
# print(msg[100])
# Error: IndexError: string index out of range (Index ááťáąáŹáşááąáááŻáˇ Error áááşááŤáááş)
4.3 String Properties¶
Python strings áá˝áąá immutable ááźá áşááŤáááş â áááŻáááŻááŹá áá°áááŻáˇááᯠáááźáááş áááşááŽá¸ááźáŽá¸áá˝áŹá¸áááş ááźááşáááşááźáąáŹááşá¸áá˛áááŻáˇ ááááąáŹáˇááŤáá°á¸á
- Immutability: Python strings áá˝áąááᯠáá°áááąááŹáážáŹ ááźááşáááŻáˇááááŤáá°á¸ (Cannot be changed in place)á
- Concatenation: Strings áá˝áąáááŻ
+ááŻáśá¸ááźáŽá¸ áááşáááŻáˇáááŤáááşá - Replication: Strings áá˝áąáááŻ
*ááŻáśá¸ááźáŽá¸ áá˝áŹá¸áááŻáˇ (Repeat ááŻááşáááŻáˇ) áááŤáááşá - Membership: String áá
áşááŻáá˛áážáŹ áááŻááşáááŻááťááşáá˛áˇ á
áŹááŹá¸ááŤáááŤ
inááŻáśá¸ááźáŽá¸ á á áşáááŻáˇáááŤáááşá
Basic String Operations
Python á String áá˝áąááᯠáá˝ááşáá˝ááşáá°áá° áááŻááşáá˝ááşáááŻááşáááŻáˇ Operators áá˝áąááᯠáááˇáşáá˝ááşá¸ááąá¸ááŹá¸ááŤáááşá
Concatenation (+)
Strings áá˝áąááᯠ+ operator áĄááŻáśá¸ááźáŻááźáŽá¸ ááąáŤááşá¸á
ááş (Concatenate) áááŻáˇáááŤáááşá
msg1 = "Hello "
msg2 = "World"
msg3 = msg1 + msg2 # msg1 áá˛áˇ msg2 ááᯠááąáŤááşá¸áááŻááşááŤáááş
print(msg3)
# Output: Hello World
Replication (*)
Strings áá˝áąááᯠ* operator áĄááŻáśá¸ááźáŻááźáŽá¸ áááşááŤáááşá፠áá˝áŹá¸áá°áááŻáˇ (Replicate ááŻááşáááŻáˇ) áááŤáááşá ááŤá Output ááᯠáážááĄáąáŹááş Format ááťáá˛áˇááąááŹáá˝áą (áĽááᏠ- á
ááşá¸ááźáąáŹááşá¸áá˝áą áá˝á˛ááŹááťááŻá¸) áážáŹ áĄáááşá¸áĄááŻáśá¸áááşááŤáááşá
Syntax Note
String áá
áşááŻááᯠáá˝áŹá¸áá°áááŻáˇáĄáá˝ááş Asterisk * ááᯠáááźá
áşáááą ááŻáśá¸áááŤáááşá Comma , ááŻáśá¸áááŻáˇ ááááŤáá°á¸á
print('-', 50)áááŻáˇááąá¸áááş Character áá˛áˇ ááááşá¸ááᯠááŽáááŻááşá¸áᲠáááŻááşááŻááşááąá¸ááŤááááˇáşáááş (áĽááᏠ-- 50)áprint('-' * 50)áááŻáˇááąá¸áážáᏠCharacter ááᯠáĄá፠á á áááá áá˝áŹá¸ááźáŽá¸ ááŻááşááąá¸áážáŹ ááźá áşááŤáááşá
# Prints 50 dashes in a single line (Dash áĄáᯠá
á ááᯠáá
áşááźáąáŹááşá¸áááşá¸ áá˝áŹá¸ááŻááşááźááşá¸)
print('-' * 50)
Membership Testing (in)
Membership testing áááŻááŹá String áá
áşááŻáá˛áážáŹ áááŻááşáážáŹááťááşáá˛áˇ Substring (á
áŹááŹá¸áĄáááŻááşá¸áĄá
) ááŤáááşááźááşá¸ áážá/ááážá á
á
áşááąá¸áᏠááźá
áşááŤáááşá ááááşáááŻáˇ ááŤáááşáááş True áááŻáˇ ááźááşááąá¸ááźáŽá¸á áááŤáááşáá°á¸áááŻáááşááąáŹáˇ False áááŻáˇ ááźááşááąá¸ááŤáááşá
s = "Hello World"
print('World' in s) # Output: True (World ááŤáááŻáˇ True ááźááŤáááş)
print('Python' in s) # Output: False (Python áááŤáááŻáˇ False ááźááŤáááş)
String Length (len())
len() function á String áá
áşááŻáá˛áážáŹááŤáááşáá˛áˇ Characters áĄááąáĄáá˝ááş (String áĄáážááş) ááᯠááźááşááąá¸ááŤáááşá
s = "Hello World"
print(len(s)) # Output: 11 (Space áĄááŤáĄáááş Character áá ááŻáśá¸ áážáááŤáááş)
String Indexing
String indexing áááŻáᏠString áá áşááŻáá˛áážáŹááŤáá˛áˇ Characters áá áşááŻáśá¸ááťááşá¸á áŽááᯠáá°áááŻáˇáá˛áˇ áááşááąááŹááź Index ááŻáśá¸ááźáŽá¸ áážááşá¸áá°áᏠááźá áşááŤáááşá
s = "Hello World"
print(s[0]) # Output: H (Index 0 ááźá
áşáá˛áˇ áááááŻáśá¸ á
áŹááŻáśá¸ááᯠáá°ááŤáááş)
print(s[-1]) # Output: d (Index -1 ááźá
áşáá˛áˇ ááąáŹááşááŻáśá¸ á
áŹááŻáśá¸ááᯠáá°ááŤáááş)
String Slicing
String slicing áááŻáᏠIndices áá˝áąááᯠRange áááŻááşáááşáážááşááźáŽá¸ String áá áşááŻáá˛á áááŻááşáááŻááťááşáá˛áˇ áĄáááŻááşá¸áĄá ááᯠááźááşááŻááşáá°áᏠááźá áşááŤáááşá
s = "Hello World"
print(s[0:5]) # Output: Hello (Index 0 áááą 5 áááąáŹááşáááşáá áá°ááŤáááş)
print(s[-6:-1]) # Output: World (Negative Index ááŻáśá¸ááźáŽá¸ ááźááşáá°ááŹááŤ)
Modern String Formatting (f-strings)
Up-to-Date Feature (Python 3.6+)
- Strings áá˛áˇ Variables áá˝áąááᯠááąáŤááşá¸á
ááşáááŻáˇáĄáá˝ááş áážáąá¸áááŻá¸á
á˝á˛áááşá¸áááşá¸áá˝áąááźá
áşáá˛áˇ
+(Concatenation) áááŻáˇáááŻááş.format()áááŻáˇáážáááŤáááşá - ááŤááąáááˇáş
f-strings(Formatted String Literals) áááąáŹáˇ Code ááᯠáááşááá˝ááşáá°á áąááźáŽá¸ (Readable)á ááŻááşááąáŹááşááťááş áááŻááźááşáááşáá˛áˇáĄáá˝ááş (Faster) áááşáážááážáŹ Modern Way áĄááąáá˛áˇ áĄááŻáśá¸ááźáŻáááŻáˇ áĄáá°á¸áĄááźáśááźáŻááŹá¸ááŤáááşá
name = "Joseph"
age = 25
# Old Way (Concatenation - áááşá¸ááąáŹááşá¸)
# Integer ááᯠString ááźáąáŹááşá¸áááŻáˇ str(age) ááśááąá¸áááŤáááş
msg = "My name is " + name + " and I am " + str(age) + " years old."
# Modern Way (f-string - áááşá¸áá
áş)
# Variable áá˝áąááᯠ{} áá˛áážáŹ áááŻááşáááŻááşáááˇáşááąá¸áááŻáˇ áááŤáááş (Type conversion áĄáááŻáááŻááŻááşááąá¸ááŤáááş)
msg = f"My name is {name} and I am {age} years old."
4.5 Built-in Functions & Methods¶
Built-in Functions:
len(s): String áá˛áˇ áĄáážááş (Character áĄááąáĄáá˝ááş) ááᯠááźááşááąá¸ááŤáááşámin(s): Unicode áááşáááŻá¸ áĄáááşá¸ááŻáśá¸ Character ááᯠááźááşááąá¸ááŤáááşámax(s): Unicode áááşáááŻá¸ áĄááťáŹá¸ááŻáśá¸ Character ááᯠááźááşááąá¸ááŤáááşá
Content Test Methods (ááŤáááşáááˇáşáĄááŹááᯠá á áşááąá¸ááźááşá¸)
isalpha(): áĄáŹá¸ááŻáśá¸á Alphabets (á áŹááŻáśá¸) áá˝áąááťááşá¸áá˛ááŹá¸ á á áşááąá¸ááŤáááşáisdigit(): áĄáŹá¸ááŻáśá¸á Digits (ááááşá¸) áá˝áąááťááşá¸áá˛ááŹá¸ á á áşááąá¸ááŤáááşáisalnum(): áĄáŹá¸ááŻáśá¸á Alphanumeric (á áŹááŻáśá¸ áááŻáˇáááŻááş ááááşá¸) ááźá áşáááźá áş á á áşááąá¸ááŤáááşáislower()/isupper(): á áŹááŻáśá¸áĄááąá¸ááŹá¸ / áĄááźáŽá¸ááŹá¸ á á áşááąá¸ááŤáááşástartswith()/endswith(): áááşáážááşááŹá¸áá˛áˇá áŹááŹá¸áá˛áˇ á /áá (Prefix) áááŻáˇáááŻááş ááŻáśá¸/áááŻáśá¸ (Suffix) á á áşááąá¸ááŤáááşá
Search and Replace
find(sub): Substring áážááá˛áˇ Index ááᯠááźááşááąá¸ááŤáááşá (ááá˝áąáˇáááş-1ááźááşááąá¸ááŤáááş)replace(old, new): Substring áĄááąáŹááşá¸ááąááŹáážáŹ áĄáá áşáá˛áˇ áĄá áŹá¸áááŻá¸ (Replace) ááŻááşááąá¸ááŤáááşá
Trimming & Splitting
lstrip(),rstrip(),strip(): áááşáááşá ááŹáááş áááŻáˇáááŻááş ááąá¸áážá áşáááşááŻáśá¸á Whitespace áá˝áąááᯠáááşáážáŹá¸ááąá¸ááŤáááşásplit(sep): String ááᯠáááŻááşá¸ááźááşááźáŽá¸ List áĄááźá áş ááźáąáŹááşá¸ááąá¸ááŤáááşájoin(iterable): List (áááŻáˇáááŻááş Iterable) áá˛á Element áá˝áąááᯠString áĄááźá áş ááźááşáááşááąá¸ááŤáááşá
Modern Python: removing prefix/suffix (Python 3.9+)
strip()áááŻááŻáśá¸ááźáŽá¸ á áŹááŻáśá¸ááźááşááŹá áááŤáááą áĄáášáááŹááşáážááááŻááşááŤáááş (áá°á á áŹááŻáśá¸áĄá áŻáĄááąá¸áááŻááş Character Set áĄááąáá˛áˇ ááźááşáááŻáˇááŤ)á- ááŤááźáąáŹááˇáş Python 3.9+ áážáŹ áááŻá áááşááťááá˛áˇ Method áá˝áąááᯠáááˇáşááąá¸ááŹá¸ááŤáááşá
filename = "report.pdf"
print(filename.removesuffix(".pdf")) # Output: report
print(filename.removeprefix("report")) # Output: .pdf
4.6 String Conversions & Comparison¶
1. Case Conversion:
á
áŹááŻáśá¸áĄááźáŽá¸á áĄááąá¸ ááŻáśá
áśááźáąáŹááşá¸áá˛ááźááşá¸ááťáŹá¸ ááźá
áşááŤáááşá
* upper(), lower(): á
áŹááŻáśá¸áĄáŹá¸ááŻáśá¸ááᯠáĄááźáŽá¸/áĄááąá¸ ááźáąáŹááşá¸ááŤáááşá
* capitalize(): á
áŹááźáąáŹááşá¸áá˛áˇ áááááŻáśá¸á
áŹááŻáśá¸áááŻáᲠáĄááźáŽá¸ááźáąáŹááşá¸ááŤáááşá
* title(): á
ááŹá¸ááŻáśá¸áááŻááşá¸áá˛áˇ áĄá
á
áŹááŻáśá¸ááᯠáĄááźáŽá¸ááźáąáŹááşá¸ááąá¸ááŤáááş (Title Case)á
* swapcase(): áĄááźáŽá¸ááᯠáĄááąá¸á áĄááąá¸ááᯠáĄááźáŽá¸ ááźáąáŹááşá¸ááźááşááŻááşááąá¸ááŤáááşá
2. Type Conversion:
Data Type áá
áşááŻáááą áá
áşááŻáááŻáˇ ááźáąáŹááşá¸áá˛ááźááşá¸ (Casting) ááźá
áşááŤáááşá
* str(), int(), float(), complex() á
ááŹáá˝áąááᯠááŻáśá¸ááźáŽá¸ String áá˛áˇ Number ááźáŹá¸ áĄááźááşáĄáážááş ááźáąáŹááşá¸áá˛áááŻááşááŤáááşá
3. ASCII/Unicode:
Character áá˝áąáá˛áˇ áá°áááŻáˇáá˛áˇ áááŻááşá
áŹá¸ááźáŻááááşá¸ááááşá¸ (Code point) áá˝áąááᯠáá˛áážááşááźááˇáşáážáŻááźááşá¸ ááźá
áşááŤáááşá
* ord('A'): Character 'A' áá˛áˇ Integer áááşáááŻá¸ 65 ááᯠááźááşááąá¸ááŤáááşá (Char to Int)
* chr(65): Integer 65 áá˛áˇ áááşáááŻááşáá˛áˇ Character 'A' ááᯠááźááşááąá¸ááŤáááşá (Int to Char)
4. Comparison:
Strings áá˝áąááᯠáážááşááźááŻááşáá˛áˇáĄá፠Lexicographical order (Dictionary áá˛á á
áŽá
ááşááŻáś) áĄáááŻááşá¸ áážááşááźááŻááşááŤáááşá
* s1 > s2 áááŻááťááŻá¸ Comparison operator áá˝áąááŻáśá¸áá˛áˇáĄá፠Character áá
áşááŻáśá¸ááťááşá¸á
áŽáá˛áˇ Unicode values ááąáŤáşáá°áááşááźáŽá¸ ááŻáśá¸ááźááşááŤáááşá (áĽááᏠ- 'a' (97) á 'A' (65) áááş ááźáŽá¸ááŤáááş)
Solved Problems¶
Problem 4.1¶
Question: Simple string áá˛áˇ Multi-line string áááşááŽá¸ááŻáśá String áá
áşááŻááᯠáááşááŽá¸ááźáŽá¸ááąáŹááş ááźááşáááşáááŻáˇ á/áá (Immutability) áá˛áˇ len(), min(), max() functions áá˝áą áĄááŻáśá¸ááźáŻááŻáśááᯠáááşáá˝áąáˇááźáááŤá
Program
# áááŻá¸áážááşá¸ááąáŹ String ááťáŹá¸
msg1 = 'Hoopla'
print(msg1)
# Special characters ááŤááąáŹ String ááťáŹá¸
msg2 = 'He said, \'Python With Joe\'.' # Quote ááŤááąáááŻáˇ \ ááśááźáŽá¸ Escape ááŻááşááŹá¸ááŤáááş
file1 = 'C:\\temp\\newfile' # Backslash áĄáá˝ááş \\ ááŻáśá¸ááŹá¸ááŤáááş
file2 = r'C:\temp\newfile' # Raw string - áážáąáˇááž r ááśáááŻááşáááş \ ááᯠEscape ááŻááşá
ááŹááááŻááŤ
print(msg2)
print(file1)
print(file2)
# Multiline strings (á
áŹááźáąáŹááşá¸ááťáŹá¸á
á˝áŹááŤááąáŹ String ááťáŹá¸)
# 1. Backslash (\) ááŻáśá¸ááźááşá¸
# ááŻááááááŻááşá¸áĄá
ááž Space (Whitespace) ááťáŹá¸áááş String áá˛áá˝ááş ááŤáá˝áŹá¸ááŤáááş
msg3 = 'What is this life if full of care...\
We have no time to stand and stare'
# 2. Triple Quotes (""") ááŻáśá¸ááźááşá¸
# ááááááŻááşá¸áĄááŻáśá¸ááž Enter (New line) áááş String áá˛áá˝ááş ááŤáá˝áŹá¸ááŤáááş
msg4 = """What is this life if full of care...
We have no time to stand and stare"""
# 3. Parentheses ( ) ááŻáśá¸ááźááşá¸
# String ááťáŹá¸ááᯠ( ) ááŻáśá¸á áĄáááŻáĄááťáąáŹááş áááşááąá¸áááş (Implicit concatenation)
msg5 = ('What is this life if full of care...'
'We have no time to stand and stare')
print(msg3)
print(msg4)
print(msg5)
# String replication (á
áŹááŹá¸áá˝áŹá¸áá°ááźááşá¸)
msg6 = 'MacLearn!!'
print(msg1 * 3) # msg1 ááᯠá á፠áá˝áŹá¸ááŻááşááŤáááş
# Immutability of strings (String ááťáŹá¸ ááźáąáŹááşá¸áá˛áááááŻááşááźááşá¸)
# 'Utopia' áááŻáá˛áˇ Object ááᯠááźááşáááŻáˇááááŤá msg7 variable áááŻáᏠáĄáá
áşááźááşáá˝ážááşá¸áááŻáˇáááŤáááş
msg7 = 'Utopia'
msg8 = 'Today!!!'
msg7 = msg7 + msg8 # + áááŻááŻáśá¸á á
áŹááŹá¸áááşááźáŽá¸ msg7 ááᯠUpdate ááŻááşáááŻááşááŤáááş
print(msg7)
# String ááťáŹá¸áĄááąáŤáş Built-in function ááťáŹá¸ áĄááŻáśá¸ááźáŻááźááşá¸
print(len('Hoopla')) # á
áŹááŻáśá¸áĄááąáĄáá˝ááş
print(min('Hoopla')) # ASCII áááşáááŻá¸ áĄáááşááŻáśá¸á
áŹááŻáśá¸
print(max('Hoopla')) # ASCII áááşáááŻá¸ áĄááźáŽá¸ááŻáśá¸á
áŹááŻáśá¸
Output
Hoopla
He said, 'Python With Joe'.
C:\temp\newfile
C:\temp\newfile
What is this life if full of care... We have no time to stand and stare
What is this life if full of care...
We have no time to stand and stare
What is this life if full of care...We have no time to stand and stare
HooplaHooplaHoopla
UtopiaToday!!!
6
H
p
Tips
- Special characters áá˝áąááᯠString áá˛áážáŹ áááˇáşáá˝ááşá¸ááááşá¸áááşá¸ááťááşáááşá áá°áááŻáˇááᯠEscape ááŻááşááźáŽá¸ááźá áşá áąá Raw string áĄááźá áş áááşáážááşááźáŽá¸ááźá áşá áą ááŻááşááąáŹááşáááŻááşááŤáááşá
- Strings áá˝áąá ááźááşáááşááźáąáŹááşá¸áá˛áááŻáˇ ááááŤáá°á¸ (Immutable ááźá áşááŤáááş)á ááŤááąáááˇáş áá°áááŻáˇááᯠááááşá¸áááşá¸ááŹá¸áá˛áˇ Variables áá˝áąáááŻááąáŹáˇ áĄáá áşááźááşáá˝ážááşá¸áááŻáˇ (Change ááŻááşáááŻáˇ) áááŤáááşá
len( )á String áá˛áážáŹáážááá˛áˇ á áŹááŻáśá¸áĄááąáĄáá˝ááşááᯠááźááşááąá¸ááŤáááşámin( )áá˛áˇmax( )áááąáŹáˇ String áá˛áážáŹáážááá˛áˇ Unicode value áĄáááşá¸ááŻáśá¸áá˛áˇ áĄááťáŹá¸ááŻáśá¸ Character áá˝áąááᯠáĄááŽá¸ááŽá¸ ááźááşááąá¸ááŤáááşá
Problem 4.2¶
ááŽááŻá
ášááŹáážáŹ 'Bamboozled' áááŻáá˛áˇ String áááŻáĄááŻáśá¸ááźáŻááźáŽá¸ Indexing, Slicing, Stepping áá˛áˇ Concatenation áááşá¸áááşá¸á
áŻáśááᯠááŻáśá¸ááźáŽá¸ Output ááŻááşááźááąá¸ááŤá
B a
e d
e d
mboozled
mboozled
mboozled
Bamboo
Bamboo
Bamboo
Bamboo
delzoobmaB
Bamboozled
Bmoze
Bbzd
Boe
BamboozledHype!
BambooMonger!
Program
s = 'Bamboozled'
# extract B a
print(s[0], s[1])
print(s[-10], s[-9])
# extract e d
print(s[8], s[9])
print(s[-2], s[-1])
# extract mboozled
print(s[2:10])
print(s[2:])
print(s[-8:])
# extract Bamboo
print(s[0:6])
print(s[:6])
print(s[-10:-4])
print(s[:-4])
# reverse Bamboozled
print(s[::-1])
print(s[0:10:1])
print(s[0:10:2])
print(s[0:10:3])
print(s[0:10:4])
s = s + 'Hype!'
print(s)
s = s[:6] + 'Monger' + s[-1]
print(s)
Tips
- Special characters áá˝áąááᯠString áá˛áážáŹ áááťáąáŹááşááťááşáĄáąáŹááş ááááşá¸áááşá¸ááťááşáááş (Retain)á áá°áááŻáˇááᯠEscape ááŻááşááźáŽá¸ááźá áşá áąá Raw string áĄááźá áş áááşáážááşááźáŽá¸ááźá áşá áą ááŻááşááąáŹááşáááŻááşááŤáááşá
s[4:8]áá˛áˇs[4:8:1]á áĄáá°áá°áᲠááźá áşááŤáááşá ááŹááźáąáŹááˇáşáá˛áááŻááąáŹáˇ Step áá˛áˇ Default áááşáááŻá¸á 1 ááźá áşáááŻáˇááŤás[4:8:2]áááąáŹáˇ Character áá áşááŻáśá¸áá°áááŻááşá á ááąáᏠááŻááşááťáąáŹáşáááŻááş (Move forward 2 positions) áá˛áˇ áááşáá˝áŹá¸áážáŹ ááźá áşááŤáááşá
Problem 4.3¶
ááŽááŻá
ášááŹáážáŹ ááąá¸ááŹá¸áá˛áˇ String áá
áşááŻááťááşá¸á
áŽáĄáá˝ááş áĄáąáŹááşááŤáĄááťááşáá˝áąááᯠá
á
áşááąá¸ááąá¸áááŤáááş -
1. Alphabets áá˝áąááťááşá¸áá˛ááŹá¸ (isalpha)
2. Numeric (ááááşá¸) áá˝áąááťááşá¸áá˛ááŹá¸ (isdigit)
3. Alphanumeric (á
áŹááŻáśá¸ áááŻáˇáááŻááş ááááşá¸) áá˝áąááťááşá¸áá˛ááŹá¸ (isalnum)
4. Lowercase / Uppercase ááźá
áşááŹá¸ (islower, isupper)
5. 'And Quiet Flows The Don' á
áŹááźáąáŹááşá¸á 'And' áá˛áˇ á
ááŹá¸/ááŻáśá¸ááŹá¸ (startswith, endswith)
Program
s1 = 'NitiAayog'
s2 = 'And Quiet Flows The Don'
s3 = '1234567890'
s4 = 'Make $1000 a day'
print('s1 = ', s1)
print('s2 = ', s2)
print('s3 = ', s3)
print('s4 = ', s4)
# Content test functions
print('check isalpha on s1, s2')
print(s1.isalpha( ))
print(s2.isalpha( ))
print('check isdigit on s3, s4')
print(s3.isdigit( ))
print(s4.isdigit( ))
print('check isalnum on s1, s2, s3, s4')
print(s1.isalnum( ))
print(s2.isalnum( ))
print(s3.isalnum( ))
print(s4.isalnum( ))
print('check islower on s1, s2')
print(s1.islower( ))
print(s2.islower( ))
print('check isupper on s1, s2')
print(s1.isupper( ))
print(s2.isupper( ))
print('check startswith and endswith on s2')
print(s2.startswith('And'))
print(s2.endswith('And'))
Output
s1 = NitiAayog
s2 = And Quiet Flows The Don
s3 = 1234567890
s4 = Make $1000 a day
check isalpha on s1, s2
True
False
check isdigit on s3, s4
True
False
check isalnum on s1, s2, s3, s4
True
False
True
False
check islower on s1, s2
False
False
check isupper on s1, s2
False
False
check startswith and endswith on s2
True
False
Problem 4.4¶
Question: - áĄáąáŹááşááąáŹáşááźá፠String ááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻááźáŽá¸ -
'Bring It On'' Flanked by spaces on either side ''C:\Users\Joseph\Documents'
áááˇáşááťáąáŹáşááąáŹ String functions ááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáᏠáĄáąáŹááşá፠Output ááááşááťáŹá¸ááᯠááážáá áąáááˇáş Program áá áşááŻááşááᯠááąá¸ááŹá¸ááŤá
ááážááááŻááąáŹ Output ááťáŹá¸:
BRING IT ON
bring it on
Bring it on
Bring It On
bRING iT oN
6
9
Bring Him On
Flanked by spaces on either side
Flanked by spaces on either side
['C:', 'Users', 'Joseph', 'Documents']
('C:', '\\', 'Users\\Joseph\\Documents')
Program
s1 = 'Bring It On'
# Conversions
print(s1.upper( ))
print(s1.lower( ))
print(s1.capitalize( ))
print(s1.title( ))
print(s1.swapcase( ))
# search and replace
print(s1.find('I'))
print(s1.find('On'))
print(s1.replace('It', 'Him'))
# trimming
s2 = ' Flanked by spaces on either side '
print(s2.lstrip( ))
print(s2.rstrip( ))
# splitting
s3 = 'C:\\Users\\Joseph\\Documents'
print(s3.split('\\'))
print(s3.partition('\\'))
Problem 4.5¶
Question - 'The Terrible Tiger Tore The Towel' áááŻáá˛áˇ String áá˛áážáŹááŤáááşááąáá˛áˇ 'T' áĄáŹá¸ááŻáśá¸ááᯠáážáŹáá˝áąááŤá
áááŻáˇááąáŹááş 'T' ááŤáááşááąáŹ ááąááŹáááŻááşá¸ááᯠ't' ááźááˇáş áĄá
áŹá¸áááŻá¸ (Replace) ááŻááşááŤá
Program
s = 'The Terrible Tiger Tore The Towel'
pos = s.find('T', 0)
print(pos, s[pos])
pos = s.find('T', pos + 1)
print(pos, s[pos])
pos = s.find('T', pos + 1)
print(pos, s[pos])
pos = s.find('T', pos + 1)
print(pos, s[pos])
pos = s.find('T', pos + 1)
print(pos, s[pos])
pos = s.find('T', pos + 1)
print(pos, s[pos])
pos = s.find('T', pos + 1)
print(pos)
c = s.count('T')
s = s.replace('T', 't', c)
print(s)
Tips
search( )(áááŻáˇáááŻááşfind()) ááᯠáááááŻáśá¸áĄááźáááş ááąáŤáşáá°áá˛áˇáĄá፠áááááŻáśá¸áá˝áąáˇáážááá˛áˇ 'T' áá˛áˇ áááşááąáᏠ(Position) ááᯠááźááşááąá¸ááŤáááşá ááąáŹááşáááşáá˝áąáˇáááŻááşáááˇáş 'T' áá˝áąááᯠáááşáážáŹáááŻáˇáĄáá˝ááş áááşáážááá˝áąáˇááŹá¸áá˛áˇááąáᏠ(pos) áá˛áˇ ááąáŹááşáá áşááąáᏠ(pos + 1) áááą á áááşáážáŹáá˝áąáááŤáááşá- ááááşáááŻáˇ 'T' ááᯠáážáŹááá˝áąáˇááąáŹáˇáá°á¸áááŻáááş
search( )á-1áááşáááŻá¸ááᯠááźááşááąá¸ááŤáááşá count( )á String áá˛áážáŹ 'T' áááşáážááźáááşááŤáááşááąááá˛áááŻáá˛áˇ áĄááąáĄáá˝ááşááᯠááźááşááąá¸ááŤáááşáreplace( )function ááᯠáĄááŻáśá¸ááźáŻáá˛áˇáĄá፠áááˇáşáá˝ááşá¸ááá˛áˇ ááááááźáąáŹááş Parameter á áĄááźáááşáĄááąáĄáá˝ááşáááşááąáŹááş áĄá áŹá¸áááŻá¸ááᲠ(Number of replacements) áááŻááŹááᯠáá˝ážááşááźááŤáááşá
Exercise¶
[A] ááąá¸áá˝ááşá¸áĄáŹá¸ááŻáśá¸ááᯠááźáąáááŻá፶
a. 'Shenanigan' áááŻáá˛áˇ String ááᯠáĄááŻáśá¸ááźáŻááźáŽá¸ áĄáąáŹááşááąáŹáşááźá፠Output ááááşááťáŹá¸ááᯠááážáá
áąáááˇáş Program áá
áşááŻááşááᯠááąá¸ááŹá¸ááŤá
ááážááááŻááąáŹ Output ááťáŹá¸:
b. áĄáąáŹááşá፠String ááźá
áşááąáŹ
'Visit ykanetkar.com for online courses in programming' áááŻ
'Visit Ykanetkar.com For Online Courses In Programming'
áĄááźá
áşáááŻáˇ ááźáąáŹááşá¸áá˛ááąá¸áááˇáş Program áá
áşááŻááşááᯠááąá¸ááŹá¸ááŤá
c. áĄáąáŹááşá፠String ááźá
áşááąáŹ 'Light travels faster than sound. This is why some people appear bright until you hear them speak.' áááŻ
'LIGHT travels faster than SOUND. This is why some people appear bright until you hear them speak.' áĄááźá
áşáááŻáˇ ááźáąáŹááşá¸áá˛ááąá¸áááˇáş Program áá
áşááŻááşááᯠááąá¸ááŹá¸ááŤá
d. áĄáąáŹááşá፠Program ááᯠRun áááŻááşááťážááş áááşáááˇáş Output áá˝ááşááŹááᲠá ááşá¸ááźááˇáşááąá¸ááŤá
s = 'HumptyDumpty'
print('s = ', s)
print(s.isalpha( )) # Alphabets áá˝áąááťááşá¸áá˛ááŹá¸ á
á
áşááąá¸ááźááşá¸
print(s.isdigit( )) # ááááşá¸áá˝áąááťááşá¸áá˛ááŹá¸ á
á
áşááąá¸ááźááşá¸
print(s.isalnum( )) # á
áŹááŻáśá¸ áááŻáˇáááŻááş ááááşá¸ ááźá
áşááŹá¸ á
á
áşááąá¸ááźááşá¸
print(s.islower( )) # á
áŹááŻáśá¸áĄááąá¸áá˝áąááťááşá¸áá˛ááŹá¸ á
á
áşááąá¸ááźááşá¸
print(s.isupper( )) # á
áŹááŻáśá¸áĄááźáŽá¸áá˝áąááťááşá¸áá˛ááŹá¸ á
á
áşááąá¸ááźááşá¸
print(s.startswith('Hump')) # 'Hump' áážááˇáş á
á áá
á
á
áşááąá¸ááźááşá¸
print(s.endswith('Dump')) # 'Dump' áážááˇáş ááŻáśá¸á áááŻáśá¸ á
á
áşááąá¸ááźááşá¸
e. Python áá˝ááş Raw string (r'...') ááᯠáĄááŻáśá¸ááźáŻáááźááşá¸á áááşáá˝ááşááťááşáážáŹ áĄáááşáááşá¸á
f. áĄáąáŹááşááąáŹáşááźá፠String áĄáá˝ááşá¸áážá á
ááŹá¸ááŻáśá¸ (Word) ááťáŹá¸ááᯠáá
áşááŻáśá¸ááťááşá¸á
ᎠááŽá¸ááźáŹá¸áá˝á˛ááŻááşáááŻááŤá áááşáááŻáˇ ááźáŻááŻááşáááşáááşá¸á
'The difference between stupidity and genius is that genius has its limits'
g. He said, "Python With Joe". áááŻááąáŹ á
áŹááŹá¸ááᯠString áá
áşááŻáĄááźá
áş ááááşá¸áááşá¸áááş áááşá¸áááşá¸ (á) ááŻááᯠááąáŹáşááźááŤá
h. áĄáąáŹááşá፠Code snippet á Output áááş áááşáááŻáˇááźá áşáááşáááşá¸á
s = 'Imaginary'
print(id(s)) # Memory address (Unique ID) ááᯠááźááŤáááş
print(type(s)) # Data Type ááᯠááźááŤáááş
j. Python áážá String ááťáŹá¸áááş Iterable (Loop áááşááááźááşá¸)á Sliceable (áááŻááşá¸ááźááşááááźááşá¸) áážááˇáş Immutable (ááźááşáááşáááááźááşá¸) áááŻáˇ ááźá áşááźáááşá (True áááŻáˇáááŻááş False)
k. 'ThreadProperties' áá°ááąáŹ String áá˛ááž ' TraPoete' áááŻááąáŹ á
áŹááŹá¸ááᯠááážááááş áááşáááŻáˇ ááŻááşáá°áááşáááşá¸ (How to extract)á
l. ' Flanked by spaces on either side ' áá°ááąáŹ String á ááąá¸áá
áşáááşáá
áşááťááşá
Ꭰ(Either side) áá˝ááş áážáááąááąáŹ Spaces ááťáŹá¸ááᯠáááşáááŻáˇ áááşáážáŹá¸áááşáááşá¸á
m. áĄáąáŹááşá፠Code snippet á Output áááş áááşáááŻáˇááźá áşáááşáááşá¸á
s1 = s2 = s3 = "Hello"
print(id(s1), id(s2), id(s3)) # Memory Address ááťáŹá¸ááᯠáááŻááşááŻááşááźááşá¸
n. áĄáąáŹááşá፠Code snippet áĄááŻááşááŻááşááźáŽá¸áá˝áŹá¸áá˛áˇáĄá፠ch variable áá˛áážáŹ áááşáááˇáşáĄáᏠáááşááąáŹááşááááşá¸áááşá¸áá˝áŹá¸áááşáááşá¸á
[B] Match the following pairs¶
Assuming msg = 'Keep yourself warm':
(msg = 'Keep yourself warm' ááźá
áşáááşáᯠáá°áááźáŽá¸ áĄáąáŹááşááŤáááŻáˇááᯠáážááşáá˝á˛ááŤ)
| Option A (Code) | Description (áážááşá¸áááşá¸ááťááş) | Option B (Result) | Match |
|---|---|---|---|
a. msg.partition(' ') |
áááááŻáśá¸áá˝áąáˇáá˛áˇ Space ááąááŹáážáŹ ááźááşááźáŽá¸ 3-tuple áĄááźá áş áá˝á˛ááŻááşááąá¸ááŤáááşá | ('Keep', ' ', 'yourself warm') |
8 |
b. msg.split(' ') |
Space áá˝áąáˇáá˛áˇááąááŹáááŻááşá¸áážáŹ ááźááşááźáŽá¸ Substrings áá˝áąááᯠList áĄááźá áş ááŻááşááąá¸ááŤáááşá | ['Keep', 'yourself', 'warm'] |
7 |
c. msg.startswith('Keep') |
String á "Keep" áá˛áˇ á á áá á á áşááąá¸ááąá¸ááŤáááşá | True | 5 |
d. msg.endswith('Keep') |
String á "Keep" áá˛áˇ ááŻáśá¸á áááŻáśá¸ á á áşááąá¸ááąá¸ááŤáááşá | False | 6 |
e. msg.swapcase() |
á áŹááŻáśá¸áĄááźáŽá¸ááᯠáĄááąá¸á áĄááąá¸ááᯠáĄááźáŽá¸ ááźáąáŹááşá¸ááźááş ááŻááşááąá¸ááŤáááşá | kEEP YOURSELF WARM | 2 |
f. msg.capitalize() |
áááááŻáśá¸á áŹááŻáśá¸ááᯠáĄááźáŽá¸**áááşááźáŽá¸ ááťááşááŹááᯠ**áĄááąá¸ ááźáąáŹááşá¸ááąá¸ááŤáááşá | Keep yourself warm | 3 |
g. msg.count('e') |
String áá˛áážáŹ 'e' áááşáážááŻáśá¸ááŤáᲠááąáá˝ááşááąá¸ááŤáááşá | 3 | 4 |
h. len(msg) |
String áá˛áˇ áĄáážááş (Character á áŻá áŻááąáŤááşá¸) ááᯠááźááşááąá¸ááŤáááşá | 18 | 1 |
i. msg[0] |
áááááŻáśá¸ Character ááᯠáá°ááŤáááşá | K | 11 |
j. msg[-1] |
ááąáŹááşááŻáśá¸ Character ááᯠáá°ááŤáááşá | m | 13 |
k. msg[1:1:1] |
Slicing ááŻááşáá˛áˇáĄá፠Start áá˛áˇ End áá°ááąáááş ááᏠ(Empty) ááźá áşáá˝áŹá¸ááŤáááşá | empty string | 12 |
l. msg[-1:3] |
ááŹáááşááž áááşáááşáááŻáˇ Positive step ááŻáśá¸ááźáŽá¸ ááźááşáááááŻááşá፠(Empty áááŤáááş)á | empty string | 15 |
m. msg[:-3] |
áĄá áááą ááąáŹááşááŻáśá¸ á ááŻáśá¸áĄáá (ááąáŹááşááŻáśá¸ á ááŻáśá¸áááŤ) ááźááşáá°ááŤáááşá | Keep yourself w | 9 |
n. msg[-3:] |
ááąáŹááşááŻáśá¸ á ááŻáśá¸ áááŻáᲠááŽá¸áááˇáşááźááşáá°ááŤáááşá | arm | 14 |
o. msg[0:-2] |
áĄá áááą ááąáŹááşááŻáśá¸ á ááŻáśá¸áĄáá (ááąáŹááşááŻáśá¸ á ááŻáśá¸áááŤ) ááźááşáá°ááŤáááşá | Keep yourself wa | 10 |