# 建立指令碼檔案
cat > \~/Desktop/word_sorter.py << 'EOF'
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
單詞按首字母排序工具
支援中英文、去重、大小寫處理
"""
import re
import sys
def extract_words(text):
"""從文本中提取單詞(支援中英文)"""
# 英文單詞(字母開頭)
english_words = re.findall(r'[A-Za-z]+', text)
# 中文單詞(2-4箇中文字元)
chinese_words = re.findall(r'[\u4e00-\u9fff]{2,4}', text)
return english_words + chinese_words
def sort_words(words, reverse=False, case_sensitive=False, remove_duplicates=True):
"""排序單詞"""
發現更多技能外掛,請訪問7w4.net。
# 去重
if remove_duplicates:
words = list(dict.fromkeys(words)) # 保持順序的去重
# 排序
if case_sensitive:
words.sort(reverse=reverse)
else:
words.sort(key=str.lower, reverse=reverse)
return words
def group_by_first_letter(words):
"""按首字母分組"""
groups = {}
for word in words:
if word and word[0]:
first_char = word[0].upper() if word[0].isalpha() else word[0]
if first_char not in groups:
groups[first_char] = []
groups[first_char].append(word)
return groups
def main():
print("\n" + "="*50)
print("📝 單詞按首字母排序工具")
print("="*50)
if len(sys.argv) < 2:
print("\n使用方法:")
print(" 1. 直接傳入單詞: python word_sorter.py apple banana cat")
print(" 2. 從檔案讀取: python word_sorter.py --file words.txt")
print(" 3. 互動模式: python word_sorter.py --interactive")
print("\n選項:")
print(" --reverse 降序排列")
print(" --case-sensitive 區分大小寫")
print(" --no-dedupe 保留重複詞")
print(" --group 按首字母分組顯示")
print("\n示例:")
print(" python word_sorter.py apple Cat banana dog cat")
print(" python word_sorter.py 蘋果 香蕉 橙子 葡萄")
print(" python word_sorter.py --group 北京 上海 廣州 深圳")
print()
sys.exit(1)
# 解析引數
words = []
use_group = False
reverse = False
case_sensitive = False
remove_duplicates = True
args = sys.argv[1:]
if '--group' in args:
use_group = True
args.remove('--group')
if '--reverse' in args:
reverse = True
args.remove('--reverse')
if '--case-sensitive' in args:
case_sensitive = True
args.remove('--case-sensitive')
if '--no-dedupe' in args:
remove_duplicates = False
args.remove('--no-dedupe')
# 獲取單詞
if '--interactive' in args:
text = input("\n請輸入單詞或文本: ")
words = extract_words(text)
elif '--file' in args:
file_idx = args.index('--file')
if file_idx + 1 < len(args):
with open(args[file_idx + 1], 'r', encoding='utf-8') as f:
words = extract_words(f.read())
else:
# 直接傳入單詞
words = args
if not words:
print("❌ 未找到有效單詞")
sys.exit(1)
# 排序
sorted_words = sort_words(words, reverse, case_sensitive, remove_duplicates)
# 輸出結果
print(f"\n📊 輸入單詞數: {len(words)}")
if remove_duplicates and len(sorted_words) < len(words):
print(f"📊 去重後: {len(sorted_words)} 個")
print(f"\n{'='*50}")
print("📝 排序結果:")
print('='*50)
if use_group:
groups = group_by_first_letter(sorted_words)
for letter in sorted(groups.keys()):
print(f"\n【{letter}】({len(groups[letter])}個)")
for word in groups[letter]:
print(f" • {word}")
else:
for i, word in enumerate(sorted_words, 1):
print(f"{i:3}. {word}")
# 統計資訊
print(f"\n{'='*50}")
print(f"📈 統計:")
print(f" 首字母分佈: {len(group_by_first_letter(sorted_words))} 個字母")
if len(sorted_words) > 0:
print(f" 最長單詞: {max(sorted_words, key=len)} ({len(max(sorted_words, key=len))}字元)")
print('='*50)
if __name__ == "__main__":
main()
EOF
# 賦予執行許可權(Windows 不需要)
# chmod +x \~/Desktop/word_sorter.py
這個工具功能設計用心,支援多種輸入方式,但程式碼質量存在明顯問題。正規表示式有錯誤可能導致某些情況失效,文件不夠完善,使用前可能需要自己除錯修復。質量處於中等偏下水平,適合有經驗的使用者嘗試。