Ⅰ 怎样用python的BeautifulSoup修改页面里的元素
BeautifulSoup是不能够直接修改tag的值的,但是可以修改tag中的属性的值:
例如,把rows从142改为153,把cols改为33等等;
如果只是输出显示的话,可以使用Python的replace:
mystring='<textareaname="text"rows="142"cols="23"wrap="physic">sdasd</textarea>'
soup=BeautifulSoup(mystring)
printstr(soup.textarea).replace('sdasd','new')
Ⅱ python处理是Xml文件的,删除标签属性符合条件的!如<data name="test"id="
你可以使用 BeautifulSoup 套件:
安装:
pip install bs4
如果觉得 html 解析器不敷使用,参考文档安装其他适合的解析器。
如果想要详细了解 BeautifulSoup 也请参考官方文档(有中文版本)。
测试档:
以下是我使用的测试文件:
# delete.txt
126
147
# test.xml
<re>
<id>123</id>
<name>abc</name>
</re>
<re>
<id>126</id>
<name>abc</name>
</re>
<re>
<id>135</id>
<name>abc</name>
</re>
<re>
<id>147</id>
<name>abc</name>
</re>
代码:
from bs4 import BeautifulSoup
with open('test.xml') as reader:
xml = reader.read()
deleted_id = []
with open('delete.txt') as reader:
for line in reader:
line = line.strip()
deleted_id.append(line)
def has_delete_id(tag):
return tag.name=='re' and tag.id.string in deleted_id
soup = BeautifulSoup(xml, 'html.parser')
tags = soup(has_delete_id)
for tag in tags:
tag.decompose()
print(soup.prettify())
程式输出:
<re>
<id>
123
</id>
<name>
abc
</name>
</re>
<re>
<id>
135
</id>
<name>
abc
</name>
</re>
代码说明:
首先我们从 Beautiful Soup 的套件中汇入 BeautifulSoup 类
from bs4 import BeautifulSoup
接着分别从 delete.txt 和 test.xml 中读出要删除的 id 和主要的 xml 内容,下一步是实体化生成一个 BeautifulSoup对象 soup, 我们采用 html.parser 解析器去解析 xml:
soup = BeautifulSoup(xml, 'html.parser')
在此我们定义了一个用于过滤的 function has_delete_id,每一个在 xml 中的tag 只要是 <re> tag 且含有想要删除的 <id> tag 就会被检索出来:
def has_delete_id(tag):
return tag.name=='re' and tag.id.string in deleted_id
接着 soup(has_delete_id) 会帮助我们找到欲删除的 tag,接着走访搜索出来的这些 tag 并呼叫方法 decompose() 来从文件中删除该标签。
最后 soup.prettify()可以帮助我们输出修改后的文件。
Ⅲ python 读取dicom tag 结果为空值
可能出现了中文乱码的问题。
DICOM全称为Digital Imaging and Communications in Medicine,即医学数字成像和通信标准。本文中读取的CT图像就是使用DICOM标准存储的。其实不只CT图像,大部分临床影像都被存储为DICOM格式,如MR与PET图像。DICOM文件中除了包含有影像数据外,还囊括了大量机器,患者信息。这些信息被存储在一个个tags or attributes之下。Pydicom包为我们提供了非常简单易用的方法来读取这些文件。
Python 由 Guido van Rossum 于 1989 年年底出于某种娱乐目的而开发, Python 语言是基于 ABC 教学语言的,而 ABC 这种语言非常强大,是专门为非专业程序员设计的。但 ABC 语言并没有获得广泛的应用, Guido 认为是非开放造成的。
Python 的“出身”部分影响了它的流行,Python 上手非常简单,它的语法非常像自然语言,对非软件专业人士而言,选择 Python 的成本最低,因此某些医学甚至艺术专业背景的人,往往会选择 Python 作为编程语言。
Ⅳ python中如何通过判断是否存在指定tag,截取tag中包含的内容
>>>s=""//FEATURE_COMMOAN @{
........
........"""
>>> import re
>>> reg=re.compile(r"//FEATURE_COMMON\s+@\{(.*?)//@\}\s+FEATURE_COMMON",re.DOTALL)
>>> reg.findall(s)
Ⅳ Python中extract_tags()怎么对多行文本提取特征词而不是一行一行计算
[python] view plain
#coding:utf-8
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
from multiprocessing import Pool,Queue,Process
import multiprocessing as mp
import time,random
import os
import codecs
import jieba.analyse
jieba.analyse.set_stop_words("yy_stop_words.txt")
def extract_keyword(input_string):
#print("Do task by process {proc}".format(proc=os.getpid()))
tags = jieba.analyse.extract_tags(input_string, topK=100)
#print("key words:{kw}".format(kw=" ".join(tags)))
return tags
#def parallel_extract_keyword(input_string,out_file):
def parallel_extract_keyword(input_string):
#print("Do task by process {proc}".format(proc=os.getpid()))
tags = jieba.analyse.extract_tags(input_string, topK=100)
#time.sleep(random.random())
#print("key words:{kw}".format(kw=" ".join(tags)))
#o_f = open(out_file,'w')
#o_f.write(" ".join(tags)+"\n")
return tags
if __name__ == "__main__":
data_file = sys.argv[1]
with codecs.open(data_file) as f:
lines = f.readlines()
f.close()
out_put = data_file.split('.')[0] +"_tags.txt"
t0 = time.time()
for line in lines:
parallel_extract_keyword(line)
#parallel_extract_keyword(line,out_put)
#extract_keyword(line)
print("串行处理花费时间{t}".format(t=time.time()-t0))
pool = Pool(processes=int(mp.cpu_count()*0.7))
t1 = time.time()
#for line in lines:
#pool.apply_async(parallel_extract_keyword,(line,out_put))
#保存处理的结果,可以方便输出到文件
res = pool.map(parallel_extract_keyword,lines)
#print("Print keywords:")
#for tag in res:
#print(" ".join(tag))
pool.close()
pool.join()
print("并行处理花费时间{t}s".format(t=time.time()-t1))
运行:
python data_process_by_multiprocess.py message.txt
message.txt是每行是一个文档,共581行,7M的数据
运行时间:
不使用sleep来挂起进程,也就是把time.sleep(random.random())注释掉,运行可以大大节省时间。
Ⅵ python 中关于beautifulsoup打印tag标签中内容的问题
import re
...
patt = re.compile(r'<.+?>(.+?)<\/.+?>')
for td in soup.findAll('td'):
print(td.getString())
Ⅶ python tkinter 的Text控件为什么tag_add和tag_config用不了
报错提示给你说的很明显了......
可能是“text1”在你代码中间被替换了,
变成了None,
检查代码吧。。。
Ⅷ Python tag解析
这个不难啊,用id来定位元素,然后就可以了。id通常是唯一的。
frombs4importBeautifulSoup
html_doc='<ahref="http://example.com/elsie"class="sister"id="link1">Elsie</a>,'
soup=BeautifulSoup(html_doc,'html.parser')
printsoup.find(id="link1").string#=>'Elsie'