Check If String Begins With One Of Several Substrings In Python
I couldn't figure out how to perform line.startswith('substring') for a set of substrings, so I tried a few variations on the code at bottom: since I have the luxury of known 4-cha
Solution 1:
Your problem stems from the fact that string slicing is exclusive of the stop index:
In [7]: line ='0123456789'In [8]: line[0:3]
Out[8]: '012'In [9]: line[0:4]
Out[9]: '0123'In [10]: line[:3]
Out[10]: '012'In [11]: line[:4]
Out[11]: '0123'Slicing a string between i and j returns the substring starting at i, and ending at (but not including) j.
Just to make your code run faster, you might want to test membership in sets, instead of in lists:
cleanLines = []
line = "sample input here"
blacklist = set(["node", "path", "Path"])
if line[:4] not in blacklist:  #skip standard headers
    cleanLines.append(line)
Now, what you're actually doing with that code is a startswith, which is not restricted by any length parameters:
In [12]: line ='0123456789'In [13]: line.startswith('0')
Out[13]: TrueIn [14]: line.startswith('0123')
Out[14]: TrueIn [15]: line.startswith('03')
Out[15]: FalseSo you could do this to exclude headers:
cleanLines = []
line = "sample input here"
headers = ["node", "path", "Path"]
if not any(line.startswith(header) for header in headers) :  #skip standard headers
    cleanLines.append(line)
Post a Comment for "Check If String Begins With One Of Several Substrings In Python"