Python|将几段文本适当解决后写成一个包含CSS和JS的网页文件
来源:小智雅汇     阅读:925
黑蚁网络
发布于 2018-06-28 22:17
查看主页

对于网络上的文本,有的换行分段不是很规范,假如想做较规范的解决,并写成自己定义的CSS和JS的网页,能按下面思路解决:

1 预先写好网页的头部文件:head.html(能包含CSS和JS代码)

2 预报写好网页的尾部文件:tail.html(能包含JS代码)

3 需要解决的文本复制到一个文本文件:original.txt,到时放到网页的内容部分;

4 编写解决文本的Python代码

4.1 将head.html写入new.html;

4.2 将original.txt内容解决后写入new.html;

4.2 将tail.html内容解决后写入new.html;

1 预先写好网页的头部文件:head.html(能包含CSS和JS代码)

Python|将几段文本适当解决后写成一个包含CSS和JS的网页文件

2 预报写好网页的尾部文件:tail.html(能包含JS代码)

Python|将几段文本适当解决后写成一个包含CSS和JS的网页文件

3 需要解决的文本复制到一个文本文件:original.txt,届时放到网页的内容部分;

4 编写解决文本的Python代码

Python|将几段文本适当解决后写成一个包含CSS和JS的网页文件

Python|将几段文本适当解决后写成一个包含CSS和JS的网页文件

5 代码非常简单,只要要注意几个语法细节:

5.1 文本读入方法的区别

5.1.1 read([size]):读取整个文件做为一个字符串或者指定size大小的内容

从文件读取size数量或者一律字符,返回一个string类型。

Python|将几段文本适当解决后写成一个包含CSS和JS的网页文件

read()的利端:

方便、简单;

一次性独读出文件放在一个大字符串中,速度最快;

read()的弊端:

文件过大的时候,占使用内存会过大,1GB的文件,需要占使用1GB的内存。

5.1.2 readline():

readline()逐行(段)读取文本,返回结果是一个字符串,当通过循环一律读完后,最后会读到一个空字符串,使用来当做循环解决结束的标记;

Python|将几段文本适当解决后写成一个包含CSS和JS的网页文件

readline()的利端:

占使用内存小,逐行读取;

readline()的弊端:

因为是逐行读取,速度比较慢;

5.1.3 readlines():

readlines()一次性读取文本的所有内容,返回结果是一个list;

Python|将几段文本适当解决后写成一个包含CSS和JS的网页文件

上面用with语句会自动关闭打开的文件;

这种方法读取的文本内容,每行(段)文本末尾都会带一个'\n'换行符 (能用L.rstrip('\n')去掉换行符)

readlines()的利端:

一次性读取文本内容,速度比较快;

readlines()的弊端:

随着文本的增大,占使用内存会越来越多,同样的,1GB的文件,需要1GB的内存;

5.1.4 直接for循环文件对象

Python|将几段文本适当解决后写成一个包含CSS和JS的网页文件

调使用read()会一次性读取文件的一律内容,文件一律内容做为一个字符串返回。假如文件太大,内存就爆了,所以,要保险起见,能反复调使用read(size)方法,每次最多读取size个字节的内容。

调使用readlines()一次读取所有内容并按行返回一个list。

调使用readline()能每次读取一行内容;

因而,要根据需要决定怎样调使用。假如文件很小,read()一次性读取最方便;假如不可以确定文件大小,反复调使用read(size)比较保险;调使用readlines()最方便。

5.2 python中'\r'、'\n'及'、'\r\n'

假如文本文件是使用atom编辑器写的,发现换行符是'\r'。这样一来去逐行读取数据就失效了,由于使用open函数去打开该文件readline()时默认用的换行符是'\n'。

但是,当这个txt文件是使用pycharm编辑器写的话,其换行符就是'\n'了。一切正常。

在打字机时代就有了这几个符号的设计,其实'\r'的本意是回到行首,'\n'的本意是换行。所以回车相当于做的是'\r\n'或者者'\n\r'。到了计算机时代沿使用了这个符号设计,后来预计换行并回行首需要一起解决,所以出现了'\r'、'\n'、'\r\n'都有可可以表示换行并回行首。(Windows是'\r\n',Linux是'\n')

假如需要明文内容,请使用'rU'来读取(强烈推荐),即U通使用换行模式(Universal new line mode)。该模式会把所有的换行符(\r \n \r\n)替换为\n。只支持读入,但是也足够了。这是Python 提供给我们的最好的选择,没有之一。

open函数加上参数'rU'后,读取结果跟txt文件体现就一致了。

另外,文件在用write()方法写入时是不提供\n,由使用户根据需要自行选择增加,这样在分行时更加灵活。

5.3 字符的strip()方法,全删除掉\n

strip()方法使用于删除字符串首尾的空格,也能使用来删除首尾的指定指定串,格式为strip([str])。strip()的功可以能分解为lstrip()和rstrip()。

5.4 open()方法打开文件时的编码问题

假如涉及编码的报错,需要进行编码解决,如:

f = open('init.txt','rU',encoding='UTF-8')

附 Python代码:

import sys

import os

import re

arg1 = '' # 脚本没有参数:不合并段落;否则使用空行分段,不是空行的合并

if len(sys.argv) > 1 :

....arg1 = sys.argv[1]

# 将init.txt的文本适当解决,写到temp.txt文件中

f = open('init.txt','rU',encoding='UTF-8')

fTemp = open('temp.txt','w',encoding="UTF-8")

s = f.read() # 整个文本文件作为一个字符串返回

s = s.replace(' ','') # 解决全角空格

s= re.sub(r'\(淫色淫色\S+\)', '', s)

#s = s.replace(' ' , '\n\n')

#解决文本中的空格,只需含有“英文+空格+英文”就不解决

pattern =re.compile(u"[a-zA-Z]+\s+[a-zA-Z]+")

entxt = re.findall(pattern,s)

if (not entxt):

'''

....s = s.replace('.' , '。')

....s = s.replace(',' , ',')

....s = s.replace('!' , '!')

....s = s.replace('?' , '?')

'''

....s = s.replace(' ' , '') # 解决半角空格(全中文能用)

if (arg1 == ''):

....for i in range(4):

........s = s.replace('\n\n','\n') # 将多余的空行解决掉

else:

....# 解决使用空行分段的文本(不是空格的段落合并)

....s = s.replace('\n\n','a1b2c3z0')# 使用'a1b2c3z0'作段落标记

....s = s.replace('\n','')

....s = s.replace('a1b2c3z0','\n')

fTemp.write(s)

f.close()

fTemp.close()

# 'w'覆盖写website.html,'a'为追加写

fNew = open('website.html','w',encoding="UTF-8")

# 将head.html文件写到new.txt文件中

with open('head.html','rU',encoding="UTF-8") as head:

....line = head.readline() # 返回单行(段落)string

....while line: # 一律读完后,会返回一个空字符串

........fNew.write(line)

........line = head.readline() # 第n次执行则返回第n行

....#fNew.write(head.read())

# 将temp.txt的每段加

\n\n,写到website.html文件中

with open('temp.txt','rU',encoding="UTF-8") as fTemp2:

....countLines = countChars = 0

....for lines in fTemp2.readlines(): # 返回一个列表list,元素为行

........countLines += 1

........countChars += len(lines)

........if countLines == 1:

............s = '

' + lines.strip() + '

\n\n'

............fNew.write(s)

........else:

............s = lines.replace('\n','')

............s = s.strip() # 会删除掉\n

............s = '

' + s + '

\n\n'

............fNew.write(s)

....fNew.write("\n\n本页共")

....fNew.write(str(countLines))

....fNew.write("段,")

....fNew.write(str(countChars))

....fNew.write("个字符。")

# 将head.html文件写到new.txt文件中

ffooter = open('footer.html','r',encoding="UTF-8")

fNew.write(ffooter.read())

fNew.close()

ffooter.close()

with open('temp.txt','rU',encoding="UTF-8") as fTemp3: #重命名website.html

....nfn = fTemp3.readline()

nfn = nfn.strip()

nfn += '.html'

if os.path.exists(nfn):

....os.remove(nfn)

os.rename('website.html',nfn)

print(countLines,"lines and",countChars,"chars.")

-End-

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 网页前端 CSS
相关推荐
首页
搜索
订单
购物车
我的