How do I get a substring of a string in Python?
>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'
Python calls this concept "slicing" and it works on more than just strings. Take a look here for a comprehensive introduction.
How to get a string after a specific substring?
The easiest way is probably just to split on your target word
my_string="hello python world , i'm a beginner"
print(my_string.split("world",1)[1])
split takes the word (or character) to split on and optionally a limit to the number of splits.
In this example, split on "world" and limit it to only one split.
How to get the substring between two markers in Python multiple times?
you can use regex
import re
s = '''alt="Thunder Force"/>ehkjehkljhiflealt="Godzilla vs. Kong"/>'''
x = re.findall(r'alt="(.*?)"/>', s)
print(x)
output
['Thunder Force', 'Godzilla vs. Kong']
Getting Substring in Python
You can still use find
if you want, find first position of |
and next one:
fullstr = "my|name|is|will"
begin = fullstr.find('|')+1
end = fullstr.find('|', begin)
print fullstr[begin:end]
Similar way using index
:
fullstr = "my|name|is|will"
begin = fullstr.index('|')+1
end = fullstr.index('|', begin)
print fullstr[begin:end]
Another way is to find all occurrences of |
in your string using re.finditer
and slice it by indexes:
import re
all = [sub.start() for sub in re.finditer('\|', fullstr)]
print fullstr[all[0]+1:all[1]]
You can also take a look into re.search
:
import re
fullstr = "my|name|is|will"
print re.search(r'\|([a-z]+)\|', fullstr).group(1)
There is an interesting way using enumerate
:
fullstr = "my|name|is|will"
all = [p for p, e in enumerate(fullstr) if e == '|']
print fullstr[all[0]+1:all[1]]
And the easiest way just using split
or rsplit
:
fullstr = "my|name|is|will"
fullstr.split('|')[1]
fullstr.rsplit('|')[1]
Does Python have a string 'contains' substring method?
Use the in
operator:
if "blah" not in somestring:
continue
How to extract the substring between two markers?
Using regular expressions - documentation for further reference
import re
text = 'gfgfdAAA1234ZZZuijjk'
m = re.search('AAA(.+?)ZZZ', text)
if m:
found = m.group(1)
# found: 1234
or:
import re
text = 'gfgfdAAA1234ZZZuijjk'
try:
found = re.search('AAA(.+?)ZZZ', text).group(1)
except AttributeError:
# AAA, ZZZ not found in the original string
found = '' # apply your error handling
# found: 1234
Related Topics
How to Convert a .Py to .Exe For Python
What Is a Mixin and Why Is It Useful
How to Properly Determine the Current Script Directory
Why Does Integer Division Yield a Float Instead of Another Integer
Why Does the Expression 0 ≪ 0 == 0 Return False in Python
Count the Frequency That a Value Occurs in a Dataframe Column
Remove All Whitespace in a String
Why Can't Python'S Raw String Literals End With a Single Backslash
Extracting an Attribute Value With Beautifulsoup
Numpy or Pandas: Keeping Array Type as Integer While Having a Nan Value
How to Execute a String Containing Python Code in Python
What's the U Prefix in a Python String
Find the Current Directory and File'S Directory
What Exactly Is Current Working Directory
How to Count the Frequency of the Elements in an Unordered List
How to Fix: "Unicodedecodeerror: 'Ascii' Codec Can't Decode Byte"