How to print portion of the string from 'startswith' till 'endswith'

split string python
how to print certain letters from a string in python
print string
python substring
how to print the first word of a string in python
python string
print string till character in python
how to extract a word from a string in python

I like to save portions of the original text file, which can be identified in between 'startswith' and 'endswith' strings, into a new text file.

Example: The input text file contains following lines:

...abc…
...starts with string...
...def...
...ends with string...
...ghi...

...jkl...
...starts with string...
...mno...
...ends with string...
...pqr...

I am interested to extract the following lines into output text file:

starts with string...def...ends with string
starts with string...mno...ends with string

My following code returns empty list [ ]. Please help correct my code.

with open('file_in.txt','r') as fi:
    id = []
    for ln in fi:
        if ln.startswith("start with string"):
            if ln.endswith("ends with string"):
                id.append(ln[:])
                with open(file_out.txt, 'a', encoding='utf-8') as fo:
                    fo.write (",".join(id))
print(id)

I expect the file.out.txt to contain, all strings which start with the "start with string" and end with the "ends with string".

At the end of each line there is a character to tell the computer to show a new row. I am assuming here that "start with string" and "ends with string" are on the same line. If this is not the case add --"id.append(ln[:])"-- directly below the first if statement.

Try

ln.endswith("ends with string"+'\n' )

or

ln.endswith("ends with string"+'\n' +'\r')
with open('C:\\Py\\testing.txt','r') as fi:
    id = []
    x = 0
    copy_line = False
    for ln in fi:
        if "starts with string" in ln:
            copy_line = True
        if copy_line:
            id.append ( ln[:] )
        if "ends with string" in ln :
            copy_line = False

    with open ('C:\\Py\\testing_out.txt', 'a', encoding='utf-8' ) as fo:
        fo.write (",".join(id))

print(id)

How to Substring a String in Python, If end is not included, or if the specified value exceeds the string length, it is assumed to be equal to the length of the string by default. step : Every� In order to do this what we need just a string and a for loop to implement our operation. Print each character from a string in Python one by one. Let’s take an example string: this_string = "Hey I am CodeSpeedy!!!" Now we want a Python program that will take each character from the string and print one by one at a time. Let’s create our

startswith and endswith return True or False rather than a position you can use to slice your string. Try find or index instead. For example:

start = 'starts with string'
end = 'ends with string'
s = '...abc… ...starts with string... ...def... ...ends with string... ...ghi...'

sub = s[s.find(start):s.find(end) + len(end)]
print(sub)
# starts with string... ...def... ...ends with string

You will need to add a bit of checking in your loop to see if the start and end strings exist because find will return -1 if there is no match and this would result in some unintended slicing.

Printing and manipulating text — Python for Biologists, String is the word we use to refer to a piece of text in a computer program (it just means Here's a line of Python code that will cause a friendly message to be printed. at how quickly you forget the purpose of a particular section or statement. You can use strncpy to duplicate the part of your string you want to print, but you'd have to take care to add a null terminator, as strncpy won't do that if it doesn't encounter one in the source string.

You can use a separate variable to indicate whether the current line is part of an interesting section and toggle this variable based on start and stop markers. Then you can also turn this function into a generator:

def extract(fh, start, stop):
    sub = False
    for line in fh:
        sub |= start in line
        if sub:
            yield line
            sub ^= stop in line

with open('test.txt') as fh:
    print(''.join(extract(fh, 'starts with string', 'ends with string')))

In Python 3.8 you can use assignment expressions:

import itertools as it

def extract(fh, start, stop):
    while any(start in (line := x) for x in fh):
        yield line
        yield from it.takewhile(lambda x: stop not in x, ((line := y) for y in fh))
        yield line

with open('test.txt') as fh:
    print(''.join(extract(fh, 'starts with string', 'ends with string')))
Variation: Excluding start and stop markers

In case start and stop markers are to be excluded from the output, we can again use itertools.takewhile:

import itertools as it

def extract(fh, start, stop):
    while any(start in x for x in fh):
        yield from it.takewhile(lambda x: stop not in x, fh)

with open('test.txt') as fh:
    print(''.join(extract(fh, 'starts with string', 'ends with string')))

Python Strings, Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, PHP, Python, Bootstrap, Java� In the first print function, I used 0 and 1 and the result is displayed in the same order as I sent arguments. That is, Mike and 4500 in the output formatted string. In the second print function, the order is 1 and 0. The first argument in the format function is emp_sal which is equal to 0 and emp_name = 1.

Python Question - how do I extract a part of a string, The code below searches for the first occurence of the ".dwg" string and assigns a ext = ".dwg" fileNameOnly = text[:text.find(ext) + len(ext)] print fileNameOnly most commonly used functions, for example Python Basics, Section 5: Strings. The substring is the portion of the object that starts at character position pos and spans len characters (or until the end of the string, whichever comes first). Parameters pos Position of the first character to be copied as a substring. If this is equal to the string length, the function returns an empty string.

Manipulating Characters in a String (The Java™ Tutorials , Getting Characters and Substrings by Index. You can get the character at a particular index within a string by invoking the charAt() accessor method. The index of� The simplest way of printing a portion of a char[] in C. Ask Question Asked 11 years, null that character in the string, print it, then save it back.

Print Examples (The GNU Awk User's Guide), The following is an example of printing a string that contains embedded newlines used to represent the newline character; see section Escape Sequences):. As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion.

Comments
  • Thanks for the update with test data. I've updated my answer accordingly, please check whether it fits your needs.
  • Still returns empty list [ ]. I will try some variations an update. Thanks.
  • I have another strategy to use a boolean operator. See the updated code.
  • @MadPhysicist I've updated my answer to meet the OP's requirements (include start and stop markers in the output), also with an example usage.
  • @a_guest: Using 'assignment expressions': following error: >File "<ipython-input-3-ad96b09294e9>", line 4 while any(start in (line := x) for x in fh): ^ SyntaxError: invalid syntax
  • @anatta As mentioned, assignment expressions were introduced in Python 3.8 which is currently only available as alpha version.
  • @a_guest: Missed it. I will update to 3.8 alpha, and try. Thanks.