переместить слово в конец строки с помощью python

#python #string

#python #строка

Вопрос:

Я разбираю HTML и получаю строку массива, которую пытаюсь очистить и позже поместить в pdf. На этом уровне я хотел бы переместить все слова, начинающиеся с @X , в конец строки, чтобы в конце все @X были выровнены.

 Hello World @Xabs
Hello World                                   @Xz
Hello World  @Xss
Hello World         @Xssa
Hello World       @Xqq
Hello World             @Xsasas
  

Что я хотел бы иметь в качестве вывода :

 Hello World                                        @Xabs
Hello World                                        @Xz
Hello World                                        @Xss
Hello World                                        @Xssa
Hello World                                        @Xqq
Hello World                                        @Xsaxs
  

Есть идеи?

Что у меня есть на данный момент:

 # encoding=utf8 
import sys
reload(sys) 
#import from lxml import html 
from bs4 import BeautifulSoup as soup 
import re import codecs 
sys.setdefaultencoding('utf8') 

# Access to the local URL(Html file) f=codecs.open("C:...file.html", 'r') 
page = f.read() 
f.close() 

#html 
parsing page_soup = soup(page,"html.parser") 
tree = html.fromstring(page) # extract the important arrays of string 

a_s= page_soup.find_all("td", {"class" :"row_cell"})
for a in a_s:
    result = a.text.replace("@X","")
    print(final_result)
  

Комментарии:

1. Что такое конец строки, это в терминале? какой длины ваша строка?

2. Вы пытались решить это самостоятельно? Если вы написали какой-либо код, было бы полезно поделиться с нами.

3. Какой формат вывода вы хотите? Также массив?

4. @David, на данный момент я удаляю @X, и моя проблема заключается в том, чтобы переместить слово сразу после @X в конец строки

Ответ №1:

В строке нет конкретного понятия ширины строки. Если вы хотите выровнять текст, выведите первую часть с постоянной шириной

 output = "{:50s} {}".format('preceding text', 'Xword')
  

Комментарии:

1. Я бы говорил не о ширине строки , а о размере строки или постоянном количестве символов . Разговор о ширине вводит в заблуждение, особенно для HTML. Хорошее решение, хотя

Ответ №2:

Очень похоже на ответ @blue_note, но делает все решение более автоматическим:

 import re

lines = ['Hello World @Xabs',
         'Hello World                                   @Xz',
         'Hello World  @Xss',
         'Hello World         @Xssa',
         'Hello World       @Xqq',
         'Hello World             @Xsasas']

aligned_lines = []
for line in lines:
    match = re.findall('@Xw ', line)[0]
    line = line.replace(match,'')
    aligned_lines.append('%-50s %s' % (line, match))

aligned_lines

['Hello World                                        @Xabs',
 'Hello World                                        @Xz',
 'Hello World                                        @Xss',
 'Hello World                                        @Xssa',
 'Hello World                                        @Xqq',
 'Hello World                                        @Xsasas']