用于检验字符串是否包含子字符串str,如果已经制定beg和end范围则将在指定范围内检验。
如果包含子字符串,返回开始的索引值,否则返回-1.
str.find(str, beg=0, end=len(string))
请编写程序,解析这个文件,提取出现符合上述特征的URL链接,每个链接一行,保存到“text-urls.txt”文件中,格式如下:。。。
fi = open('sweb.html','r',encoding='utf-8')
fo = open("text-urls.txt","w", encoding="utf-8")
txt = fi.read()
ls = txt.split(" ") #因为前后都为空格
urls = []
for item in ls:
if item[:5] == "href=" and item[6:13] == "http://":
x = item.find(">",5) #判断href是否是最后一个属性,如果是则需要删掉>
if x == -1: #不是的情况
urls.append(item[6:-1])
else:
urls.append(item[6:x-len(item)-1]) #是的情况。 以上都要不包含引号
for item in urls:
fo.write(item+"\n")
fi.close()
fo.close()
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
基础中文字符的Unicode编码范围是[0x4e00,0x9fa5],共20902个字符。请以10451位循环移位数量,编写中文文本的类恺撒密码加解密方法。
原文字符P,其密文字符C满足如下条件:
C = ( P + 10451 ) mod 20902
解密与加密方法一致,满足:
P = ( C + 10451 ) mod 20902
标点符号、英文字母不加密。
下面是一段测试文本:
输入(加解密前):全国计算机等级考试二级Python语言程序设计
输出(加解密后):稻翐拎勄逍剶嗔地挂睟嗔Python挚愭儸蝢拫拎
dict_0 = {}
#for x in [0x4e00, 0x9fa5]:
x = 0x4e00
for i in range(20902):
dict_0[chr(x+i)] = chr((i+10451) % 20902 + x)
#print("".join([d.get(c,c) for c in s]))
s = input()
print("".join([dict_0.get(l,l) for l in s]))
import jieba
fi = open("神雕侠侣-网络版.txt", "r", encoding='utf-8')
fo = open("神雕侠侣-人名亲和度.txt", "w", encoding='utf-8')
names = ["杨过", "小龙女", "李莫愁", "裘千尺", "郭靖", "黄蓉"]
d = {}
for item1 in names:
for item2 in names:
if item1 != item2:
d[item1 + "-" + item2] = 0
txt = fi.read()
ls = jieba.lcut(txt)
for i in range(len(ls)-100):
if ls[i] in names:
for j in range(1,101):
if ls[i+j]!=ls[i] and (ls[i+j] in names):
d[ls[i]+'-'+ls[i+j]] += 1
break
ols = []
for key in d:
ols.append("{}:{}".format(key, d[key]))
fo.write(",".join(ols))
#fo.write(",\n".join(ols))
fi.close()
fo.close()
import jieba
fi = open("神雕侠侣-网络版.txt",'r',encoding='utf-8')
txt = fi.read()
names = ['杨过','小龙女','李莫愁','裘千尺','郭靖','黄蓉']
for name in names:
jieba.add_word(name)
words = jieba.lcut(txt)
dict_0 = {}
for name in names:
others = list(names)
others.remove(name)
print(others)
flag = 0
for word in words:
if flag == 100:
flag = -1
if word == name:
flag = 0
if flag != -1:
if word in others:
guanxi = name +'-'+word
dict_0[guanxi] = dict_0.get(guanxi,0) + 1
flag+= 1
print(dict_0)
每行30个字符,诗词居中,每半句一行,去掉所有标点。输出到文件“七律.txt”。
问题二输出:
输出全文的翻转形式。
str.center(width, fill_char)返回一个原字符串居中,以特定字符(默认空格) 填充至长度width的新字符串。
问题1
s = "钟山风雨起苍黄,百万雄师过大江。\
虎踞龙盘今胜昔,天翻地覆慨而慷。\
宜将剩勇追穷寇,不可沽名学霸王。\
天若有情天亦老,人间正道是沧桑。"
lines = ""
for i in range(0,len(s),8):
lines += s[i:i+7].center(30) +'\n'
print(lines)
fo = open("七律.txt", "w")
fo.write(lines)
fo.close()
问题2
s = "钟山风雨起苍黄,百万雄师过大江。\
虎踞龙盘今胜昔,天翻地覆慨而慷。\
宜将剩勇追穷寇,不可沽名学霸王。\
天若有情天亦老,人间正道是沧桑。"
ls = []
for i in range(0,len(s),8):
ls.append(s[i:i+7])
ls.reverse()
n = 0
for item in ls:
n = n + 1
if n%2 !=0 :
print(item,end=",")
else:
print(item,end="。\n")
参照输出格式如下:
了:234
的:234
有:234
你:234
我:234
fo = open("sgldout.txt","r",encoding ="utf-8")
words = fo.readlines()
fo.close()
sym = ";。,“”: "
DictWords = {}
for ls in words:
if ls[:-1] not in sym:
DictWords[ls[:-1]] = DictWords.get(ls[:-1], 0) + 1
L = list(DictWords.items()) #对字典进行排序时若使用sort方法则需把dict_items对象转化为list
L.sort(key = lambda s:s[1],reverse=True)
# 输出到文件
fo = open("sgldstatistics.txt", "w", encoding="utf-8")
for i in range(5):
fo.writelines(L[i][0] + ":" + str(L[i][1]) + "\n")
fo.close()
综合应用题(15)
文件ngchina.html保存了网页源代码,请将该页面中图片的URL提取出来,并输出所有图片的URL。输出格式如下:
第1个URL:http://image.ngchina.com.cn/2018/0829/20180829012548753.jpg
第2个URL:http://image.ngchina.com.cn/2018/0823/thumb_469_352_20180823121155508.jpg
…
本题目前不支持在线评阅,请自行设计编码实现。
#读取HTML文件内容
def getHTMLlines(htmlpath):
f = open(htmlpath,"r",encoding = 'utf-8')
ls = f.readlines()
f.close()
return ls
#用于解析文件并提取图片的URL
def extractImageUrls(htmllist):
urls = []
for line in htmllist:
if 'img' in line:
url = line.split('src=')[-1].split('"')[1]
if 'http' in url:
urls.append(url)
return urls
#将获取的链接输出到屏幕上
def showResults(urls):
count = 1
for url in urls:
print("第{:2}个URL:{}".format(count,url))
count += 1
# 主程序:1 读取文件;2 解析并提取其中的图片链接;3 输出提取结果到屏幕
def main():
inputfile = "ngchina.html"
htmllines = getHTMLlines(inputfile)
imageUrls = extractImageUrls(htmllines)
showResults(imageUrls)
先观察网页结构,可以适当模块化
算术平均数为3428.96。
中位数为3966.5。
def Arithmetic(numbers): #计算算法平均数
sum = 0.0
for i in numbers:
sum = sum + float(i)
return sum/len(numbers)
def Median(numbers): #计算中位数
numbers = sorted(numbers)
size = len(numbers)
if size % 2 == 0:
med = (float(numbers[size//2-1]) + float(numbers[size//2]))/2
else:
med = numbers[size//2] #中位数的位置与索引值的关系
return med
fo = open("numbers.txt","r",encoding ="utf-8")
ls = []
for line in fo.readlines():
line = line.replace("\n","")
ls.append(line)
print("算术平均数为{}。".format(Arithmetic(ls)))
print("中位数为{}。".format(Median(ls)))
注意考虑中位数的位置与索引值的关系
原始诗词风格:
人生得意须尽欢,莫使金樽空对月。
天生我材必有用,千金散尽还复来。
软文风如下:
人生得意须尽欢
莫使金樽空对月
天生我材必有用
千金散尽还复来
#参照编程模板,完善代码。本题目前不支持在线评阅。
txt = '''人生得意须尽欢,莫使金樽空对月。\
天生我才必有用,千金散尽还复来。'''
print(txt)
linewidth = 30
def lineSplit(line):
plist =[',','!','?',',','。']
for p in plist:
line = line.replace(p,'\n')
return line.split('\n')
def linePrint(line):
global linewidth
print(line.center(linewidth,chr(12288)))
newlines = lineSplit(txt)
for newline in newlines:
linePrint(newline)
注意换行符和标点的的处理方法,全局变量的使用