天天看點

Python 程式設計1000例(10):以目前日期時間批量建立檔案及實作字元串與清單等資料的去重案例一、以目前日期時間批量建立檔案二、實作字元串與清單等資料的去重

文章目錄

  • 一、以目前日期時間批量建立檔案
  • 二、實作字元串與清單等資料的去重

本系列文章通過 1000(一篇文章表示 1 個執行個體) 個執行個體 ,為讀者提供較為詳細的練習題目,以便讀者舉一反三,深度學習。本系列的文章涉及到 Python 知識點包括:Python 語言基礎、運算符和表達式、語句和程式結構、清單和元組、字典和集合、字元串、正規表達式、函數、面向對象程式設計、子產品和包、異常處理和程式調試、檔案和目錄操作、資料庫程式設計、界面程式設計、網絡程式設計、WEB 程式設計、程序和線程、網絡爬蟲、遊戲程式設計等知識點,由易到難,由淺入深,一步步打下堅實的程式設計基礎。

本系列文章涉及的算法包括搜尋、回溯、遞歸、排序、疊代、貪心、分治和動态規劃等,涉及的資料結構包括字元串、清單、指針、區間、隊列、矩陣、堆棧、連結清單、哈希表、線段樹、二叉樹、二叉搜尋樹和圖結構等。

本系列文章是筆者為适應目前教育改革的創新要求,更好地踐行語言類課程,滿足實踐教學與創新能力培養的需要,閱讀大量書籍、各大網際網路公司的面試算法、LintCode、LeetCode、九章算法和結合筆者近幾年項目經驗編寫的系列文章,精選了 1000 個趣味性、實用性強的應用執行個體,從不同難度、不同算法、不同類型和不同資料結構等方面,将實際算法進行總結,希望為 Python 程式設計人員抛磚引玉。由于筆者經驗與水準有限,博文中疏漏及不妥之處在所難免,衷心地希望各位讀者在評論區多提寶貴意見及具體的修改建議,以便筆者進一步修改和完善。

一、以目前日期時間批量建立檔案

需求:在平時的工作中,我們經常會遇到需要批量建立檔案的情況,例如,彙總一個月中每天回複問題的檔案、存儲不同型号産品資訊的相應檔案等,要求使用 Python 以目前日期時間批量建立檔案。示例效果如下:

Python 程式設計1000例(10):以目前日期時間批量建立檔案及實作字元串與清單等資料的去重案例一、以目前日期時間批量建立檔案二、實作字元串與清單等資料的去重

實作根據日期時間建立檔案,首先使用 datetime 子產品的 datetime.now()方法擷取目前日期時間;然後使用 strftime()方法對擷取到的日期時間進行格式化,擷取要建立的檔案名,最後使用open()方法建立相應的檔案。關鍵代碼如下:

import os
import datetime
import time

while True:
    path = input("請輸入檔案儲存位址:").strip()  # 記錄檔案儲存位址
    num = int(input("請輸入建立檔案的數量:").strip())  # 記錄檔案建立數量
    # 循環建立檔案
    for i in range(num):
        t = datetime.datetime.now()  # 擷取目前時間
        # 對目前時間進行格式化,作為檔案名
        file = os.path.join(path, t.strftime("%Y%m%d%H%M%S") + ".txt")
        open(file, "w", encoding="utf-8")  # 以UTF-8編碼建立檔案
        time.sleep(1)  # 休眠一秒鐘
        i += 1  # 循環辨別加1
    print("建立成功")
    os.startfile(path)  # 打開路徑檢視
           

在上面的案例當中使用了 os.startfile() 方法,該方法是用于使用關聯的應用程式啟動檔案。文法格式如下:

參數說明如下:

  1. path:表示要啟動檔案的路徑。
  2. operation:可選參數,如果未指定,則相當于在 Windows 資料總管中輕按兩下該檔案,或者将檔案名作為參數提供給互動式 Shell 的 start 指令中,檔案将以關聯的應用程式打開;否則必須是一個

    指令動詞

    ,用來指定對檔案做什麼。常見動詞有 print 和 edit (要在檔案中使用),以及 explore 和 find (要在目錄中使用).。
  3. 傳回值:無。

使用系統預設的程式打開文本檔案、圖檔檔案、Word 檔案和 PDF 檔案,代碼如下:

import os

# 導入檔案與作業系統相關子產品
os.startfile(r"e:/mot.txt")  # 采用系統預設的編輯潛打開文本檔案
os.startfile(r'e:/qrcode.png')  # 采用系統預設的編輯器打開圖檔檔案
os.startfile(r'e:/test1.docx')  # 用系統預設的編輯潛打開word檔案
os.startfile(r'e:/test2.pdf')  # 采用系統預設的編輯器打開PDF檔案
           

上面代碼中的應用程式路徑為部落客計算機中所安裝軟體的路徑,讀者在編寫代碼時,需要根據實際情況進行修改。在上面的案例當中還使用了 os.path.join() 方法,join() 方法用于将兩個或者多個路徑拼接到一起組成一個新的路徑。文法格式如下:

參數說明:

  1. path:表示要拼接的檔案路徑。
  2. *paths:表示要拼接的多個檔案路徑,這些路徑間使用逗号進行分隔。如果在要拼接的路徑

    中,沒有一個絕對路徑,那麼最後拼接出來的将是一個相對路徑。

  3. 傳回值:拼接後的路徑。

說明:使用 os.path.join() 方法拼接路徑時,并不會檢測該路徑是否真實存在。示例代碼如下:

import os  # 導入子產品

print(os.path.join(r"R:\mystream\pcstory", r"demo\hello.py"))  # 拼接字元串
# 如果要拼接的路徑中,存在多個絕對路徑,那麼按從左到右順序,以最後一次出現的絕對路徑為準,并且該路徑之前的參數都将被忽略
print(os.path.join("E:/code", 'E:/python/amo', "Code", "c:/", "demo"))  # 拼接字元串
           

程式運作結果如下:

Python 程式設計1000例(10):以目前日期時間批量建立檔案及實作字元串與清單等資料的去重案例一、以目前日期時間批量建立檔案二、實作字元串與清單等資料的去重

注意:把兩個路徑拼接為一個路徑時,不要直接使用字元串拼接,而是使用 os.path.join() 方法,這樣可以正确處理不同作業系統的路徑分隔符。

二、實作字元串與清單等資料的去重

需求:随着大資料、雲技術等的發展,各行各業每天都會産生海量的大資料,如何讓這些大資料逐漸為人類創造更多的價值,為企業所用,已經成為網際網路經濟的核心發展方向。由于目前各行各業産生的大資料會有很多重複的資料,影響分析效率,是以進行大資料分析的第一步,是檢測和消除其中的重複資料,通過資料去重,一方面是減少存儲空間和網絡帶寬的占用;另一方面可以減少資料分析量。資料去重又稱重複資料删除,是指在一個資料集合中,找出重複的資料并将其删除,隻儲存唯一的資料單元。要求定義如下字元串和清單,使用 Python 對其中重複的資料進行剔除。

name = "王李張李陳王楊張吳周王劉趙黃吳楊"
city = ["上海", "廣州", "上海", "成都", "上海", "上海", "北京", "上海", "廣州", "北京", "上海"]
           

(1) 字元串去重的 5 種方法。下面通過 5 種方法對 “王李張李陳王楊張吳周王劉趙黃吳楊” 進行去重。示例代碼如下:

# 一、通過for循環周遊字元串去重
print("======== 一、通過for循環周遊字元串去重 ========")
name = "王李張李陳王楊張吳周王劉趙黃吳楊"
new_name = ""
for char in name:
    if char not in new_name:  # 如果不在結果字元串中
        new_name += char  # 添加到結果字元串中
print(new_name)
print()

# 二、通過while循環周遊字元串去重
print("======== 二、通過while循環周遊字元串去重 ========")
new_name = ""
i = len(name) - 1  # 擷取字元串的長度-1,即最大索引值
while True:
    if i >= 0:  # 如果還超出索引範圍
        if name[i] not in new_name:
            new_name += name[i]
        i -= 1
    else:  # 超出索引範圍則結束循環
        break
print(new_name)
print()

# 三、使用清單的方法去重
print("======== 三、使用清單的方法去重 ========")
my_name = set(name)  # 轉換為集合,則去除重複元素
print(my_name)
new_name = list(my_name)  # 将集合轉換為清單
print("".join(new_name))  # 将清單連接配接為字元串并輸出
new_name.sort(key=name.index)  # 對清單排序
print(new_name)
print("".join(new_name))  # 将排序後的清單連接配接為字元串并輸出
print()

# 四、在原字元串中直接删除
print("======== 四、在原字元串中直接删除 ========")
L = len(name)  # 字元串的長度
for s in name:
    if name[0] in name[1:L]:
        name = name[1:L]
    else:
        name = name[1:L] + name[0]
print(name)
print()

# 五、使用fromkeys()方法把字元串轉成字典
print("======== 五、使用fromkeys()方法把字元串轉成字典 ========")
name = "王李張李陳王楊張吳周王劉趙黃吳楊"
zd = {}.fromkeys(name)
my_list = list(zd.keys())
print("".join(my_list))
           

程式運作結果如下:

Python 程式設計1000例(10):以目前日期時間批量建立檔案及實作字元串與清單等資料的去重案例一、以目前日期時間批量建立檔案二、實作字元串與清單等資料的去重

(2) 清單的去重方法,示例代碼如下:

city = ["上海", "廣州", "上海", "成都", "上海", "上海", "北京", "上海", "廣州", "北京", "上海"]

# 方法一:for循環語句(不改變原來順序)
n_city = []
for item in city:
    if item not in n_city:
        n_city.append(item)  # 添加到新清單中
print(n_city)

# 方法二:set方法(改變原來順序)
n_city = list(set(city))
print(n_city)

# 方法三:set方法(不改變原來順序)
n_city = list(set(city))
n_city.sort(key=city.index)
print(n_city)

# 方法四:count()方法統計并删除,需要先排序(改變原來順序)
city.sort()
for x in city:
    while city.count(x) > 1:
        del city[city.index(x)]
print(city)

# 方法五:把清單轉成字典
my_list = list({}.fromkeys(city).keys())
print(my_list)
           

程式運作結果如下:

Python 程式設計1000例(10):以目前日期時間批量建立檔案及實作字元串與清單等資料的去重案例一、以目前日期時間批量建立檔案二、實作字元串與清單等資料的去重

感謝您閱讀本篇博文,希望本文能成為您程式設計路上的領航者。祝您閱讀愉快!

Python 程式設計1000例(10):以目前日期時間批量建立檔案及實作字元串與清單等資料的去重案例一、以目前日期時間批量建立檔案二、實作字元串與清單等資料的去重

    好書不厭讀百回,熟讀課思子自知。而我想要成為全場最靓的仔,就必須堅持通過學習來擷取更多知識,用知識改變命運,用部落格見證成長,用行動證明我在努力。

    如果我的部落格對你有幫助、如果你喜歡我的部落格内容,請

點贊

評論

收藏

一鍵三連哦!聽說點贊的人運氣不會太差,每一天都會元氣滿滿呦!如果實在要白嫖的話,那祝你開心每一天,歡迎常來我部落格看看。

 編碼不易,大家的支援就是我堅持下去的動力。點贊後不要忘了

關注

我哦!