CARVIEW |
- Log in to:
- Community
- DigitalOcean
- Sign up for:
- Community
- DigitalOcean

Python string supports slicing to create substring. Note that Python string is immutable, slicing creates a new substring from the source string and original string remains unchanged.
Python slice string
Python slice string syntax is:
str_object[start_pos:end_pos:step]
The slicing starts with the start_pos index (included) and ends at end_pos index (excluded). The step parameter is used to specify the steps to take from start to end index. Python String slicing always follows this rule: s[:i] + s[i:] == s for any index ‘i’. All these parameters are optional - start_pos default value is 0, the end_pos default value is the length of string and step default value is 1. Let’s look at some simple examples of string slice function to create substring.
s = 'HelloWorld'
print(s[:])
print(s[::])
Output:
HelloWorld
HelloWorld
Note that since none of the slicing parameters were provided, the substring is equal to the original string. Let’s look at some more examples of slicing a string.
s = 'HelloWorld'
first_five_chars = s[:5]
print(first_five_chars)
third_to_fifth_chars = s[2:5]
print(third_to_fifth_chars)
Output:
Hello
llo
Note that index value starts from 0, so start_pos 2 refers to the third character in the string.
Reverse a String using Slicing
We can reverse a string using slicing by providing the step value as -1.
s = 'HelloWorld'
reverse_str = s[::-1]
print(reverse_str)
Output: dlroWolleH
Let’s look at some other examples of using steps and negative index values.
s1 = s[2:8:2]
print(s1)
Output: loo
Here the substring contains characters from indexes 2,4 and 6.
s1 = s[8:1:-1]
print(s1)
Output: lroWoll
Here the index values are taken from end to start. The substring is made from indexes 1 to 7 from end to start.
s1 = s[8:1:-2]
print(s1)
Output: lool
Python slice works with negative indexes too, in that case, the start_pos is excluded and end_pos is included in the substring.
s1 = s[-4:-2]
print(s1)
Output: or
Python string slicing handles out of range indexes gracefully.
>>>s = 'Python'
>>>s[100:]
''
>>>s[2:50]
'thon'
That’s all for python string slice function to create substring.
You can checkout complete python script and more Python examples from our GitHub Repository.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
About the author
Java and Python Developer for 20+ years, Open Source Enthusiast, Founder of https://www.askpython.com/, https://www.linuxfordevices.com/, and JournalDev.com (acquired by DigitalOcean). Passionate about writing technical articles and sharing knowledge with others. Love Java, Python, Unix and related technologies. Follow my X @PankajWebDev
Still looking for an answer?
Hi Thankx for this section. I need more clarification on s1 = s[8:1:-1] print(s1) Output: lroWoll I am unable to get it .
- sradhanjali behera
Hi I have a doubt: string = “Hi There” print (string[-4:-2]) and the output is ‘he’ but shouldn’t the output be ‘eh’? I am unable to understand why the output is showing he
- Kalpit
For the negative count, the end of the string starts from -1 not 0. It is like -4 -3 -2 -1 not -4 -3 -2 -1 0
- Coder
Your idea about reverse a string using a negative value is completely wrong please update this post. What actually happening here is x = ‘H e l l o w o r l d’ -----0 1 2 3 4 5 6 7 8 9 >>> x[8:1:-1] output – ‘ l r o w o l l ‘ -------8 7 6 5 4 3 2 Usually, the second parameter 1 won’t be taken into consideration right. This means if I enter x[1:8], index 8 won’t be sliced right. Similarly, this happens in x[8:1:-1]. So index 1 won’t be sliced. >>> x[-2:-8:-1] output- ‘lrowol’ Here, -2,-3,-4,-5,-6,-7 indexes will be sliced. Conclusion: string[x:y:p] When p x>y and index y won’t be sliced. That’ it!!!
- Kobinarth Panchalingam
TheData = [20, 3, 4,8,12, 99,4, 26 , 4 ] TheData1= TheData [ 0 : len(TheData) : 1 ] def InsertionData (TheData1): for Count in range(0, len(TheData1)): DataToInsert = TheData1(Count) Inserted = 0 Nextvalue = Count - 1 while (Nextvalue >= 0 and Inserted != 1): if DataToInsert < TheData1(Nextvalue): TheData1(Nextvalue + 1) == TheData1(Nextvalue) Nextvalue = Nextvalue -1 TheData1(Nextvalue +1 ) == DataToInsert else: Inserted = 1 def printarray(TheData1): for count in range(0, len(TheData1)): print(TheData1(count) ) print("Array before sorting \n ") printarray(TheData1) InsertionData(TheData1) print(“Array After sorting \n”) printarray(TheData1) Error: Array before sorting Traceback (most recent call last): File “c:\Users\Admin\Desktop\Paper 4 solution.py”, line 26, in printarray(TheData1) File “c:\Users\Admin\Desktop\Paper 4 solution.py”, line 23, in printarray print(TheData1(count) ) TypeError: ‘list’ object is not callable Anyone help how to done slicing in python
- malik
- Table of contents
- Python slice string
Deploy on DigitalOcean
Click below to sign up for DigitalOcean's virtual machines, Databases, and AIML products.
Become a contributor for community
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
DigitalOcean Documentation
Full documentation for every DigitalOcean product.
Resources for startups and SMBs
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Get our newsletter
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
The developer cloud
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Get started for free
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.