-------------------------------------- 程式設計能是大模型應用的天花板..................................................................
所以要好好將大模型應用在企業一定要好好練好最看不起的一環,基礎能力字串處理 本文件來自老男孩培訓Alex 課程記錄,
我在2017年聽過這個老師的課,非常不錯,所以在寫Ai 應用開發的時候,在基礎部份會參考高手的成果
name = "my name is alex"
pring(name.caitalize()) 首字母大寫
pring(name.count("my")) 統計字串出現的次數,可以是單字或多詞
print(name.casefold()) 這個說是轉換寫成小寫,還會對特殊字元處理,一處理就可能不是我們想要的了,況且還有更好的相同功能的方法,所以很少少用,用不著
pring(name.center(50,"_")) 居中列印,列印50個字元,不夠用——補位
print(name.ljust(50,"***")) 左邊對齊,右邊的用*** 代替,補齊50位
print(name.rjust(50,'*')) 右對齊,不多的補**
print("A".lower()) 大寫轉小寫 "upp".upper() 小寫轉大寫
"\nAlex\n".lstrip() 左邊去空格 rstip() 去掉右邊 strip() 去掉空格
pring(name.encode) 編碼相關,將二進位制編成位元組
pring(name.endswith("alex")) 是否是這個結尾 返回true 或 false
pring(name.expandtabs(tabsize = 30)) 字串中出現的\t 等於多少個空格
pring.find("y") 找到字串的索引取出來,用於切片時候用 那麼。name[name.find("name") :])
pring(name.format(name="alex",year = 33)) 格式化字串,將字串中的{name} 變數替換
print(name.format_map({}) 可以傳一下字字賟 來格式化字串,通常format 就夠用了
pring(name.isalnum) 是不是阿拉伯數字
print (''ssss".isalpha()) 是不是純英文
print("1A".isdecimal) 是不是隻包括十進位制
print("1A".isdigit) 是不是整數
title(),將字母的首字母變大寫
translate 對映majetrabs 這二個方法一起使用,先用majetrabs 建立一個射映表,然後translate 轉換
# 建立字元對映表 mapping = str.maketrans("aeiou", "12345") # 使用translate()方法進行字元替換 string = "Hello, World!" translated_string = string.translate(mapping) print(translated_string) 輸出結果是 H2ll4, W4rld! 解釋 先給aeiou 映一個其它字元,然後在使用中遇到這幾個字元就替換成對映字元,比較好理解
replace 替換
print("xsy".isidentifier()) 是不是一個合法的變數名。支援中文英文,但是不能數字開頭
print("33.33".isnumeric())是不是隻有數字
"my".isprintable 是不是包括可打針印的,其實就是說這個字元中是不是非輸出的法字元,說是說\n \t 這樣的字元,有製表符會返false
istitle() 是不是每個單詞都 是首字母大寫,單詞之間有空格
join '+++'.join(['a','b','c']) 將列表的元素用什麼點連起來。
split() 將字串切成列表
string = "Hello, World! How are you?" words = string.split() print(words) //輸出結果 ['Hello,', 'World!', 'How', 'are', 'you?']
字典操作
可以將每個人的資訊儲存起來,比如省市縣的關聯資訊,一個人資訊這些都 可以用字典來儲存,info = {"姓名":"張三"}} 有索引,有資訊的元素叫做字典,
程式設計中叫有key和valu由於是key 是唯 一的,所以字母無序,
假設一個字典是這樣子
info = { "stu1101": "TengLan", "stu1102": "Loula", "stu1103": "Maliy" } name = info["stu1101"] print(name) # 輸出: TengLan
列印這個字典方式是: for key, value in info.items(): print(key, value)
取出一個值:
print(info["stu1101"])
查詢
"stu1101" in info //True
info["stu11011"] 查詢這個值,但是這個值如果沒有會報錯,用get不會錯,info.get("stu11011")
修改一個值
info["stu1101"] = "武騰蘭"
刪除
del info["11011"] 刪除
info.pop("stu11011")
info.popitem()隨便刪一個
更新整個字典,可以用一個新字典更新,相同dey 覆蓋,不同的增加 info.update(b)
將一個例錶轉換為列表 info.item()
info.formdeys([6,7,9])建立一個新字典,key 是6,7,8
c = dict.fromkeys([6, 7, 8], [1, {"name": "alex"}, 444])
c = dict.fromkeys([6, 7, 8], [1, {"name": "alex"}, 444])
執行結果是:
{
6: [1, {"name": "alex"}, 444],
7: [1, {"name": "alex"}, 444],
8: [1, {"name": "alex"}, 444]
}
以下程式碼是說dict.fromkeys()如果用以下方式建立的話,可以value 是一個引用的值,以後修改其中一個值,會影起其它值改變,
在這個程式碼段中,c 是透過 dict.fromkeys() 方法建立的字典,該方法的作用是使用指定的鍵列表建立一個新字典,其中所有的值預設為 None 或者指定的預設值。 c = dict.fromkeys([6, 7, 8], [1, {"name": "alex"}, 444]) c = dict.fromkeys([6, 7, 8], [1, {"name": "alex"}, 444]) 執行這段程式碼後,c 的內容將是: { 6: [1, {"name": "alex"}, 444], 7: [1, {"name": "alex"}, 444], 8: [1, {"name": "alex"}, 444] } { 6: [1, {"name": "alex"}, 444], 7: [1, {"name": "alex"}, 444], 8: [1, {"name": "alex"}, 444] } 注意,在這個操作中,由於 dict.fromkeys() 方法建立的字典中每個鍵都引用同一個列表物件 [1, {"name": "alex"}, 444],因此當修改其中一個鍵對應的列表時,其他鍵對應的列表也會隨之改變。這是因為它們實際上引用的是同一個物件。 如果希望每個鍵引用不同的列表物件,可以考慮使用以下方式建立 c: c = {key: [1, {"name": "alex"}, 444] for key in [6, 7, 8]} c = {key: [1, {"name": "alex"}, 444] for key in [6, 7, 8]} 這樣每個鍵的值都是一個新的列表物件,而不是共享同一個列表物件,指定的值實際上是同一個物件的引用。當您修改其中一個鍵對應的值時,因為其他鍵對應的值與之相同,所以會看到它們也發生了變化。 如果您希望每個鍵引用不同的列表物件,可以使用以下方式建立 c: keys = [6, 7, 8] values = [1, {"name": "alex"}, 444] c = {key: list(value) for key in keys} keys = [6, 7, 8] values = [1, {"name": "alex"}, 444] c = {key: list(value) for key in keys} 這樣每個鍵的值都是一個新的列表物件,而不是共享同一個列表物件。 以下是修正後的程式碼示例: keys = [6, 7, 8] values = [1, {"name": "alex"}, 444] c = {key: list(value) for key in keys} print(c) c[7][1]['name'] = "Jack Chen" print(c) # 輸出: {6: [1, {'name': 'alex'}, 444], 7: [1, {'name': 'Jack Chen'}, 444], 8: [1, {'name': 'alex'}, 444]} keys = [6, 7, 8] values = [1, {"name": "alex"}, 444] c = {key: list(value) for key in keys} print(c) c[7][1]['name'] = "Jack Chen" print(c) # 輸出: {6: [1, {'name': 'alex'}, 444], 7: [1, {'name': 'Jack Chen'}, 444], 8: [1, {'name': 'alex'}, 444]}
在Python中,使用 for i in data遍歷字典時,i表示的是字典的鍵(key),而不是鍵值對。這是因為字典是由鍵值對組成的資料結構,而在遍歷時,預設情況下只遍歷字典的鍵。如果你想同時訪問鍵和值,
可以使用 data.items()方法來遍歷字典的鍵值對,例如:
data = {"key1": "value1", "key2": "value2", "key3": "value3"}
# 遍歷鍵值對
for key, value in data.items():
print(key, value)
data = {"key1": "value1", "key2": "value2", "key3": "value3"}
# 遍歷鍵值對
for key, value in data.items():
print(key, value)
輸出結果:
key1 value1
key2 value2
key3 value3
key1 value1
key2 value2
key3 value3
案例,叫三級查詢,程式執行時,先列出要查詢省份名稱,然後使用者輸出省的名稱和編號進行相詢,如果輸入某個省的編號或省份名稱,系統就列表這個省下面所有市的序號和名稱 ,然後提示請輸入你要查那個市 ,列出市下面所有縣的編號和名稱,使用者可以查某一個市所有的縣。在任意選單都 可以按Q退程式,按E 返回一上級。如果沒有上級則不顯示,返回一級。
# 省市縣資料 data = { "1": {"name": "浙江省", "cities": { "1": {"name": "杭州市", "counties": { "1": "西湖區", "2": "上城區", "3": "下城區" }}, "2": {"name": "溫州市", "counties": { "1": "鹿城區", "2": "龍灣區", "3": "甌海區" }} }}, "2": {"name": "江蘇省", "cities": { "1": {"name": "南京市", "counties": { "1": "玄武區", "2": "白下區", "3": "秦淮區" }}, "2": {"name": "蘇州市", "counties": { "1": "姑蘇區", "2": "虎丘區", "3": "吳中區" }} }} } # 顯示省份列表 print("省份列表:") for key, value in data.items(): print("{}: {}".format(key, value["name"])) # 使用者選擇省份 province_choice = input("請輸入省份名稱或編號進行查詢:") if province_choice.lower() == "q": exit() elif province_choice.lower() == "e": exit() # 根據使用者選擇的省份獲取市資訊 cities = data[province_choice]["cities"] print("\n{} 下的市列表:".format(data[province_choice]["name"])) for key, value in cities.items(): print("{}: {}".format(key, value["name"])) # 使用者選擇市 city_choice = input("請輸入市編號進行查詢,按Q退出,按E返回上一級:") if city_choice.lower() == "q": exit() elif city_choice.lower() == "e": exit() # 根據使用者選擇的市獲取縣資訊 counties = cities[city_choice]["counties"] print("\n{} 下的縣列表:".format(cities[city_choice]["name"])) for key, value in counties.items(): print("{}: {}".format(key, value))
不同的格式和不同的思路
# 作者資訊 __author__ = "www.51" # 多級城市縣鎮村的字典資料 data = { '北京':{ # 北京作為一級鍵 "昌平":{ # 昌平作為二級鍵 "沙河":["oldboy","test"], # 沙河作為三級鍵,值為列表 "天通苑":["鏈家地產","我愛我家"] # 天通苑作為三級鍵,值為列表 }, "朝陽":{ # 朝陽作為二級鍵 "望京":["賓士","陌陌"], # 望京作為三級鍵,值為列表 "國貿":{"CICC","HP"}, # 國貿作為三級鍵,值為集合 "東直門":{"Advent","飛信"}, # 東直門作為三級鍵,值為集合 }, "海淀":{}, # 海淀作為二級鍵,值為空字典 }, '山東':{ "德州":{}, # 德州作為二級鍵,值為空字典 "青島":{}, # 青島作為二級鍵,值為空字典 "濟南":{} # 濟南作為二級鍵,值為空字典 }, '廣東':{ "東莞":{}, # 東莞作為二級鍵,值為空字典 "常熟":{}, # 常熟作為二級鍵,值為空字典 "佛山":{}, # 佛山作為二級鍵,值為空字典 }, } # 退出標誌 exit_flag = False # 主迴圈,根據使用者輸入不斷展示相應的資料 while not exit_flag: for i in data: # 遍歷一級鍵 print(i) # 列印一級鍵 choice = input("選擇進入1>>:") # 使用者選擇一級鍵 if choice in data: # 判斷使用者輸入是否為一級鍵 while not exit_flag: # 進入二級鍵選擇迴圈 for i2 in data[choice]: # 遍歷二級鍵 print("\t",i2) # 列印二級鍵 choice2 = input("選擇進入2>>:") # 使用者選擇二級鍵 if choice2 in data[choice]: # 判斷使用者輸入是否為二級鍵 while not exit_flag: # 進入三級鍵選擇迴圈 for i3 in data[choice][choice2]: # 遍歷三級鍵 print("\t\t", i3) # 列印三級鍵 choice3 = input("選擇進入3>>:") # 使用者選擇三級鍵 if choice3 in data[choice][choice2]: # 判斷使用者輸入是否為三級鍵 for i4 in data[choice][choice2][choice3]: # 遍歷四級鍵(值) print("\t\t",i4) # 列印四級鍵(值) choice4 = input("最後一層,按b返回>>:") # 提示使用者輸入 if choice4 == "b": # 如果使用者輸入b pass # 繼續下一個迴圈 elif choice4 == "q": # 如果使用者輸入q exit_flag = True # 設定退出標誌為True if choice3 == "b": # 如果使用者輸入b break # 退出當前迴圈,返回上一級 elif choice3 == "q": # 如果使用者輸入q exit_flag = True # 設定退出標誌為True if choice2 == "b": # 如果使用者輸入b break # 退出當前迴圈,返回上一級 elif choice2 == "q": # 如果使用者輸入q exit_flag = True # 設定退出標誌為True