Jannik732
Jannik732

Reputation: 41

Extract string from HTML String

i want to extract a number from a html string (i usually do not know the number).

The crucial part looks like this:

<test test="3" test="search_summary_figure WHR WVM">TOTAL : 286</test>
<tagend>

And i want to extract the "286". I want to do something like "start after "L :" and stop before "<". How can i do this ? Thank you very much in advance.

Upvotes: 0

Views: 90

Answers (6)

Jatin Chauhan
Jatin Chauhan

Reputation: 325

If your HTML String is this:

html_string = """<test test="3" test="search_summary_figure WHR WVM">TOTAL : 286</test>
<tagend>"""

Try this:

int(html_string.split("</test>")[0].split(":")[-1].replace(" ", ""))

Upvotes: 0

Mace
Mace

Reputation: 1410

If the string "TOTAL : number" is unique then use a regular expression to first search this substring and then extract the number from it.

import re

string = 'test test="3" test="search_summary_figure WHR WVM">TOTAL : 286</test>'

reg__expr = r'TOTAL\s:\s\d+'  # TOTAL<whitespace>:<whitespace><number>
# find the substring
result = re.findall(reg__expr, string)
if result:

   substring = result[0]

   reg__expr = r'\d+'  # <number>
   result = re.findall(reg__expr, substring)
   number = int(result[0])

   print(number)

You can test your own regular expressions here https://regex101.com/

Upvotes: 1

Rado
Rado

Reputation: 66

You can use string partitioning to extract a "number" string from the whole HTML string like this (assuming HTML code is in html_string variable):

num_string=html_string.partition("TOTAL:")[2].partition("<")[0]

there you get num_string with the number as a string, then simply convert it to an integer or whatever you want. Keep in mind that this will process the first occurence of anything that looks like "TOTAL: anything_goes_here <", so you want to make sure that this pattern is unique.

Upvotes: 0

Abhishek Kulkarni
Abhishek Kulkarni

Reputation: 1767

You can try the following like this below:

    line = "TOTAL : 286"
    if line.startswith('TOTAL : '):
        print(line[8:len(line)])

Output :

    286

Upvotes: 0

CodeCupboard
CodeCupboard

Reputation: 1585

If the HTML is always in the same format you would split the string at "TOTAL : " and then the first part of the next string is your answer. If what follows is consistent then spiting again would get you what you want.

Example HTML ( i have just made up the surrounding)

Target : 123
TOTAL : 286
Mass : 123

Code

t = """    Target : 123
    TOTAL : 286
    Mass : 123"""


print (t.split("TOTAL : ")[1].split("Mass")[0])

returns:

286

There are tools that do this mush neater such as beautifulsoup but for a basic example this works also.

Upvotes: 0

Saeed Ramezani
Saeed Ramezani

Reputation: 482

in your view.py document you can try this:

import re
my_string="TOTAL : 286"
int(re.search(r'\d+', my_string).group())

286

Upvotes: 0

Related Questions