我正在解析一个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)发布于 2019-03-08 11:09:07
与@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('@X\w+', 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']发布于 2019-03-08 10:54:50
字符串中没有特定的线宽概念.如果要对齐文本,请用恒定宽度打印第一部分。
output = "{:50s} {}".format('preceding text', 'Xword')https://stackoverflow.com/questions/55061589
复制相似问题