gritts
gritts

Reputation: 185

Appending a newline in Python results in a double line

I have some python code that retrieves data from an internal (intranet) site. It appears to work fine in that it retrieves the expected elements. For the sake of example (item1item2item3item4). The results do not have any spaces or newline between each element.

To remedy this, I thought I would use this approach (code snip):

# XPATH redacted
elements = driver.find_elements(By.XPATH,"/html/body/app-root/....")

for e in elements:
    elelist += e.text+"\n"
    count += 1
print(elelist)
print(f"There are {count} items.")

This results in the text items being returned like this: item1

item2

item3

item4

If I choose to append a comma instead of a newline, I get double commas as a result: item1,,item2,,item3,,item4

I believe this to be related as well, the value for "count" returns double what there actually is regardless of whether I append a newline or comma. So if there are 4 items, the count says there are 8. Using "elecount = elements.count", returns "<built-in method count of list object at 0x0000015B49B89100>"

Python is fairly new to me as is digging into a sites elements. Is there something I am not accounting for that does not show up when I inspect the page elements?

Upvotes: 0

Views: 53

Answers (1)

Tobi208
Tobi208

Reputation: 1376

Seems like you have 'empty' elements in the list. Could be from styling/layout related divs without text. You could add a condition while printing to avoid them:

if len(e.text) > 0:
    elelist += e.text+"\n"

or filter the list beforehand:

elements = [e for e in elements if len(e.text) > 0]

Upvotes: 2

Related Questions