#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']