\# 创建脚本文件
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):
"""排序单词"""
# 去重
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
共 1 个版本