嵩天-Python语言程序设计程序题--第七周:文件和数据格式化
前言:嵩天老師的《Python語言程序設計課程》被評為國家精品課程,在幕課上累計超過11萬學員,里面的習題對初學者入門Python,提高編程實戰能力很有幫助。因此,我想把自己學習這門課程作業分享出來,和大家一起學習交流
目錄
文件行數
文件字符分布
文件獨特行數
CSV格式列變換
CSV格式數據清洗
文本的平均列數
? ??描述
? ??輸入輸出示例
CSV格式清洗與轉換
? ??描述
? ??輸入輸出示例
文件行數
打印輸出附件文件的有效行數,注意:空行不計算為有效行數。????????????????????????????????????????????????????????????????????????????????????????????????
輸入輸出格式:這是僅給出輸出格式樣例,不是結果。????????????????????????????????????????????????????????????????????????????????????????????????
輸出示例????????????????????????????????????????????????????????????????????????????????????????????????
共100行附件 1: latex.log
解答
with open("latex.log",'r',encoding='utf-8') as f:n=0 for line in f:line = line.strip('\n') # 去除換行符,空行也會有一個換行符字符\nif len(line)==0:continuen = n+1 print("共{}行".format(n))文件字符分布
統計附件文件的小寫字母a-z的字符分布,即出現a-z字符的數量,并輸出結果。????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
同時請輸出文件一共包含的字符數量。????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
注意輸出格式,各元素之間用英文逗號(,)分隔。????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
答案可能包含a-z共26個字符的分布,如果某個字符沒有出現,則不顯示,輸出順序a-z順序。????????????????????????????????????????????????????????????????????????????????????????????????
輸入輸出格式:這是僅給出輸出格式樣例,不是結果。????????????????????????????????????????????????????????????????????????????????????????????????
輸出示例????????????????????????????????????????????????????????????????????????????????????????????????
共999字符,a:11,b:22,c:33,d:44,e:55附件 1: latex.log
解答
with open("latex.log",'r',encoding='utf-8') as f:character_count = 0d = {}for i in range(26):# 產生a-z26個字母的字典d[chr(ord('a')+i)] = 0for line in f:for ch in line:# 對a-z進行計數d[ch] = d.get(ch,0)+1character_count += 1 print("共{}字符".format(character_count),end="") for i in range(26):if d[chr(ord('a')+i)] != 0: #去除a-z沒有出現過對字母print(",{}:{}".format(chr(ord('a')+i),d[chr(ord('a')+i)]),end="")?
文件獨特行數
統計附件文件中與其他任何其他行都不同的行的數量,即獨特行的數量。????????????????????????????????????????????????????????????????????????????????????????????????
輸入輸出格式:這是僅給出輸出格式樣例,不是結果。????????????????????????????????????????????????????????????????????????????????????????????????
輸出示例????????????????????????????????????????????????????????????????????????????????????????????????
共99獨特行附件 1: latex.log?
# 生成每一行即出現次數的字典,然后選出出現次數為1的行進行計數 with open("latex.log",'r',encoding='utf-8') as f:line_count = 0d = {}for line in f:d[line] = d.get(line,0)+1line_count += 1 s = 0 for line in d:if d[line]==1:s=s+1 print("共{}獨特行".format(s),end="")CSV格式列變換
附件是一個CSV文件,請將每行按照列逆序排列后輸出,不改變各元素格式(如周圍空格布局等)。????????????????????????????????????????????????????????????????????????????????????????????????
輸入輸出格式:這是僅給出輸出格式樣例,不是結果。????????????????????????????????????????????????????????????????????????????????????????????????
輸入示例????????????????????????????????????????????????????????????????????????????????????????????????
(以下是文件內容) 1,2,3,4 a,b,c,d輸出示例????????????????????????????????????????????????????????????????????????????????????????????????
4,3,2,1 d,c,b,a附件 1: data.csv
with open("data.csv",'r',encoding='utf-8') as f:for line in f:line=line.strip('\n') # 去掉換行符ls = line.split(",")ls = ls[::-1] # 將ls中的元素逆序排列print(",".join(ls))CSV格式數據清洗
附件是一個CSV文件,其中每個數據前后存在空格,請對其進行清洗,要求如下:????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
(1)去掉每個數據前后空格,即數據之間僅用逗號(,)分割;????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
(2)清洗后打印輸出。????????????????????????????????????????????????????????????????????????????????????????????????
輸入輸出格式:這是僅給出輸出格式樣例,不是結果。????????????????????????????????????????????????????????????????????????????????????????????????
輸入示例????????????????????????????????????????????????????????????????????????????????????????????????
(在文件中) 1, 2, 3, 4, 5 'a', 'b' , 'c' , 'd','e'輸出示例????????????????????????????????????????????????????????????????????????????????????????????????
1,2,3,4,5 'a','b','c','d','e'附件 1: data.csv
with open("data.csv",'r',encoding='utf-8') as f:for line in f:line=line.strip('\n') # 去掉換行符line=line.replace(' ','') #去掉空格print(line)?
文本的平均列數
描述
打印輸出附件文件的平均列數,計算方法如下:????????????????????????????????????????????????????????????????????????????????????????????????
(1)有效行指包含至少一個字符的行,不計算空行;????????????????????????????????????????????????????????????????????????????????????????????????
(2)每行的列數為其有效字符數;????????????????????????????????????????????????????????????????????????????????????????????????
(3)平均列數為有效行的列數平均值,采用四舍五入方式取整數進位。????????????????????????????????????????????????????????????????????????????????????????????????
輸入輸出示例
僅給出輸出格式示例,非正確答案。????????????????????????????????????????????????????????????????????????????????????????????????
| ? | 輸入 | 輸出 |
| 示例 1 | 無 | 123 |
????????????????????????????????????????????????????????????????????????????????????????????????附件???程序內如何讀取附件?
附件 1: latex.log
lineSum=0 n=0 with open("latex.log",'r',encoding='utf-8') as f:for line in f:line = line.strip('\n') # 去除換行符if len(line)==0:continuelineSum = lineSum + len(line)n = n+1 print(int(lineSum/n))CSV格式清洗與轉換
描述
附件是一個CSV格式文件,提取數據進行如下格式轉換:????????????????????????????????????????????????????????????????????????????????????????????????
(1)按行進行倒序排列;????????????????????????????????????????????????????????????????????????????????????????????????
(2)每行數據倒序排列;????????????????????????????????????????????????????????????????????????????????????????????????
(3)使用分號(;)代替逗號(,)分割數據,無空格;????????????????????????????????????????????????????????????????????????????????????????????????
按照上述要求轉換后將數據輸出。?????????????????????????????????????????????????????????????????????????????????????????????????
輸入輸出示例
以下是一個格式示例,不是最終結果。????????????????????????????????????????????????????????????????????????????????????????????????
| ? | 輸入 | 輸出 |
| 示例1 | (以下內容在文件中) 1,2,3 4,5,6 7,8,9 | 9;8;7 6;5;4 3;2;1 |
?????????????????????????????????????????????????????????????????????????????????????????????????附件 1: data.csv
ls=[] with open("data.csv",'r',encoding='utf-8') as f:for line in f:line=line.replace("\n",'')line=line.replace(" ",'')ls.append(line.split(',')[::-1])ls=ls[::-1]for i in ls:print(';'.join(i))?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的嵩天-Python语言程序设计程序题--第七周:文件和数据格式化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: watsonx.ai 背后的黑科技——企
- 下一篇: 嵩天-Python语言程序设计程序题--