-1

I have a piece of code as follows. I want to take a header and remove the special symbols " !@#$%^&* " from it, but I've tried everything but still can't. Hope everyone can help, thank you very much

        try:
        title = driver.find_element(By.XPATH,'/html/body/main/section[2]/div/div/article/div[3]/p[1]/span').text
        print(title)

        if title.count("#") > 0:
            titles.append(title)
            titles[number] = title[0:title.index('#')]
            number += 1
        else:
            titles.append(title)
            number += 1

        if titles[number-1] == '':
            titles[number-1] = f"Invalid Title"
            
        banned_char = '<>:"/\|?*'
        for character in banned_char:
            if title.count(character) > 0:
                titles[number-1] = title[title.replace('<>:"/\|?*',' ')]
    except:
        titles.append(f'Failed Title number {number}')
        number+=1
        print(f'Download {number} have no title.')
  • Does this answers to your query : https://stackoverflow.com/questions/23996118/replace-special-characters-in-a-string-in-python – KunduK Oct 07 '22 at 09:56
  • how about `.replace('<',' ').replace('>',' ').replace(':',' ')` ? Function `replace` search exactly element `<>:"/\|?*`, not every char separatelly. And it needs `title = title.replace(...)`, not `title[title.replace(...)]` – furas Oct 07 '22 at 10:35
  • maybe first run without `try/except` to see where you have mistake, and what is FULL error message - because you may have mistake in other places – furas Oct 07 '22 at 10:40

1 Answers1

0

I see two mistakes in your code

  • replace searchs exactly string '<>:"/\|?*' and you should replace every char separatelly .replace('<',' ').replace('>',' ').replace(':',' ') (or run it in for-loop)

  • you have to assign title = title.replace(), not title[title.replace(...)

banned_char = '<>:"/\|?*'

for character in banned_char:
    title = title.replace(character,' ')

# --- after loop ---

titles[number-1] = title
furas
  • 134,197
  • 12
  • 106
  • 148