How to Repeatedly Append to a String in Python
See Python: Tips and Tricks for similar articles.In Python, if you need to repeatedly append to a string, you should convert it to a list, append your items to that list, and then join the list back into a string after you've made all the additions.
To illustrate, imagine you are reading through a long log file looking for lines that begin with "ERROR:" You want to store all those lines in a string and write them out to a new file.
Your first inclination might be to do that like this:
with open('log.txt') as f:
log = f.readlines()
new_log = ''
for line in log:
if line[:6] == 'ERROR:':
new_log += line
with open('newlog.txt','w') as f:
f.write(new_log)
But as Python strings are immutable, that method requires creating new memory allocation each time you modify the string.
Instead, you should do the following:
- Open and read the log file into a list (e.g.,
log
):with open('log.txt') as f: log = f.readlines()
- Create a new empty list (e.g.,
new_log
):new_log = []
- Loop through the
log
list looking for matches and append each matching line to thenew_log
list:for line in log: if line[:6] == 'ERROR:': new_log.append(line)
- Join
new_log
on an empty string and write it to the new log file:with open('newlog.txt','w') as f: f.write(''.join(new_log))
If you're only making a few changes to the string, you won't notice much difference, but if you're making thousands, this method is much more efficient.
Related Articles
- Fixing WebVTT Times with Python
- Using Python to Convert Images to WEBP
- Scientific Notation in Python
- Understanding Python’s __main__ variable
- Converting Leading Tabs to Spaces with Python
- pow(x, y, z) more efficient than x**y % z and other options
- A Python Model for Ping Pong Matches
- Bulk Convert Python files to IPython Notebook Files (py to ipynb conversion)
- Python’s date.strftime() slower than str(), split, unpack, and concatenate?
- Basic Python Programming Exercise: A Penny Doubled Every Day
- Bi-directional Dictionary in Python
- How to find all your Python installations on Windows (and Mac)
- Associate Python Files with IDLE
- Change Default autosave Interval in JupyterLab
- Python: isdigit() vs. isdecimal()
- Python Clocks Explained
- Python Color Constants Module
- Maximum recursion depth exceeded while calling a Python object
- When to use Static Methods in Python? Never
- Finally, a use case for finally – Python Exception Handling
- Creating an Email Decorator with Python and AWS
- Python Coding Challenge: Two People with the Same Birthday
- How to Create a Simple Simulation in Python – Numeric Data
- Collatz Conjecture in Python
- Simple Python Script for Extracting Text from an SRT File
- Python Virtual Environments with venv
- Mapping python to Python 3 on Your Mac
- How to Make IDLE the Default Editor for Python Files on Windows
- How to Do Ternary Operator Assignment in Python
- How to Convert Seconds to Years with Python
- How to Create a Python Package
- How to Read a File with Python
- How to Check the Operating System with Python
- How to Use enumerate() to Print a Numbered List in Python
- How to Repeatedly Append to a String in Python (this article)
- Checking your Sitemap for Broken Links with Python
- How to do Simultaneous Assignment in Python
- Visual Studio Code - Opening Files with Python open()
- How to Slice Strings in Python
- How Python Finds Imported Modules
- How to Merge Dictionaries in Python
- How to Index Strings in Python
- How to Create a Tuple in Python