怎样实现首尾内容截取脚本

wen 实用脚本 22

本文目录导读:

怎样实现首尾内容截取脚本

  1. Python脚本实现
  2. JavaScript实现
  3. Shell脚本实现
  4. 高级功能脚本
  5. 使用案例

Python脚本实现

基础版本

def truncate_text(text, max_length=100, start_keep=30, end_keep=30):
    """
    截取文本的首尾部分
    Args:
        text: 原始文本
        max_length: 最大长度
        start_keep: 保留开头字符数
        end_keep: 保留结尾字符数
    Returns:
        截取后的文本
    """
    if len(text) <= max_length:
        return text
    start = text[:start_keep]
    end = text[-end_keep:]
    return f"{start}...{end}"
# 使用示例
text = "这是一个很长的文本,需要截取首尾内容,中间的部分会被省略号替代。"
result = truncate_text(text, max_length=50)
print(result)

进阶版本(支持多语言)

import re
def smart_truncate(text, max_length=100, keep_ratio=0.7):
    """
    智能截取,保留首尾指定比例的内容
    Args:
        text: 原始文本
        max_length: 最大长度
        keep_ratio: 保留内容的比例(0-1之间)
    """
    if len(text) <= max_length:
        return text
    # 计算保留的字符数
    keep_chars = int(max_length * keep_ratio)
    start_keep = keep_chars // 2
    end_keep = keep_chars - start_keep
    start = text[:start_keep]
    end = text[-end_keep:]
    return f"{start}...{end}"
# 使用示例
text = "Python是一种广泛使用的解释型、高级通用编程语言"
result = smart_truncate(text, max_length=20)
print(result)  # 输出: Python...语言

JavaScript实现

基础版本

function truncateText(text, maxLength = 100) {
    if (text.length <= maxLength) {
        return text;
    }
    const startKeep = Math.floor(maxLength * 0.6);
    const endKeep = maxLength - startKeep;
    const start = text.slice(0, startKeep);
    const end = text.slice(-endKeep);
    return `${start}...${end}`;
}
// 使用示例
const longText = "这是一段很长的文本内容,需要在中间部分进行截取";
const result = truncateText(longText, 20);
console.log(result);

浏览器控制台脚本

// 网页中提取特定元素的首尾内容
(function() {
    const element = document.querySelector('body');
    const text = element.textContent;
    function truncateText(text, maxLen = 200) {
        if (text.length <= maxLen) return text;
        const keep = maxLen / 2;
        return text.slice(0, keep) + '...' + text.slice(-keep);
    }
    console.log(truncateText(text));
})();

Shell脚本实现

Linux/Mac

#!/bin/bash
# 首尾截取函数
truncate_text() {
    local text="$1"
    local max_length="${2:-100}"
    if [ ${#text} -le $max_length ]; then
        echo "$text"
        return
    fi
    local start_keep=$((max_length / 2))
    local end_keep=$((max_length - start_keep))
    local start="${text:0:$start_keep}"
    local end="${text: -$end_keep}"
    echo "${start}...${end}"
}
# 使用示例
text="这是一个测试文本,用于演示Shell脚本中的首尾截取功能"
truncate_text "$text" 30

高级功能脚本

带日志和参数配置的完整脚本

#!/usr/bin/env python3
"""截取工具
支持多种模式和配置
"""
import argparse
import logging
class TextTruncator:
    def __init__(self, start_marker="", end_marker=""):
        self.start_marker = start_marker
        self.end_marker = end_marker
        self.logger = logging.getLogger(__name__)
    def truncate(self, text, max_length=100, mode='chars'):
        """
        多种截取模式
        Args:
            text: 输入文本
            max_length: 最大长度
            mode: 'chars'(字符), 'words'(单词), 'lines'(行)
        """
        if mode == 'chars':
            return self._truncate_chars(text, max_length)
        elif mode == 'words':
            return self._truncate_words(text, max_length)
        elif mode == 'lines':
            return self._truncate_lines(text, max_length)
    def _truncate_chars(self, text, max_length):
        if len(text) <= max_length:
            return text
        start_keep = max_length // 2
        end_keep = max_length - start_keep
        result = text[:start_keep] + "... " + text[-end_keep:]
        self.logger.info(f"文本从 {len(text)} 字符截取到 {max_length} 字符")
        return result
    def _truncate_words(self, text, max_words):
        words = text.split()
        if len(words) <= max_words:
            return text
        start_keep = max_words // 2
        end_keep = max_words - start_keep
        return " ".join(words[:start_keep]) + "... " + " ".join(words[-end_keep:])
    def _truncate_lines(self, text, max_lines):
        lines = text.split('\n')
        if len(lines) <= max_lines:
            return text
        start_keep = max_lines // 2
        end_keep = max_lines - start_keep
        return "\n".join(lines[:start_keep]) + "\n...\n" + "\n".join(lines[-end_keep:])
# 命令行接口
def main():
    parser = argparse.ArgumentParser(description='首尾内容截取工具')
    parser.add_argument('text', help='要截取的文本')
    parser.add_argument('-m', '--max', type=int, default=100, help='最大长度')
    parser.add_argument('--mode', choices=['chars', 'words', 'lines'], 
                       default='chars', help='截取模式')
    args = parser.parse_args()
    truncator = TextTruncator()
    result = truncator.truncate(args.text, args.max, args.mode)
    print(result)
if __name__ == "__main__":
    # 直接使用示例
    truncator = TextTruncator()
    text = "这是一个示例文本,用于演示首尾截取功能,Python是一种强大的编程语言。"
    print(truncator.truncate(text, 20))
    # 作为命令行工具使用
    # main()

使用案例

截取

// 在浏览器控制台中运行
const pageText = document.body.innerText;
const truncated = truncateText(pageText, 500);
console.log('页面内容(截取后):', truncated);

日志文件处理

#!/bin/bash
# 处理日志文件的首尾内容
log_file="/var/log/system.log"
head_lines=5
tail_lines=5
echo "===== 日志开头 ====="
head -n $head_lines "$log_file"
echo "===== 日志结尾 ====="
tail -n $tail_lines "$log_file"

选择建议:

  • 文本处理:使用Python脚本,功能最强大
  • 网页开发:使用JavaScript版本
  • 命令行操作:使用Shell脚本
  • 复杂场景:使用带参数配置的高级版本

这些脚本可以根据具体需求调整参数,实现灵活的首尾内容截取。

抱歉,评论功能暂时关闭!