`

python判断文本显示长度

 
阅读更多

在实际应用中我们难免遇到某些显示位置最多只能显示比如4个中文加1个英文,一共9个字节的gbk编码文字,但是我们文本是utf-8的,如果转换GBK,担心里面有非GBK文字,那么我们如何截取来控制显示字符个数呢?

思路是这样子:首先文本用unicode表示,python中用u"汉字和English"表示;如果是字母或数字,计数宽度单位为1,否则计数2,这样来判断文本显示宽度是否超标,如果超标,利用截取函数,一个一个的往后截取,直到显示宽度越界了,回退一个,截取这么多个unicode字符返回即可。

代码如下:

#coding=utf-8

def is_chinese(uchar):
    '''判断一个unicode是否是汉字'''
    if uchar >= u'\u4e00' and uchar<=u'\u9fa5':
        return True
    return False
def is_number(uchar):
    """判断一个unicode是否是数字"""
    if uchar >= u'\u0030' and uchar<=u'\u0039':
        return True
    return False
def is_alphabet(uchar):
    """判断一个unicode是否是英文字母"""
    if (uchar >= u'\u0041' and uchar<=u'\u005a') \
        or (uchar >= u'\u0061' and uchar<=u'\u007a'):
        return True
    return False
def is_other(uchar):
    """判断是否非汉字,数字和英文字符"""
    if not (is_chinese(uchar) or is_number(uchar) or is_alphabet(uchar)):
        return True
    return False

# gbk宽度可用于对齐,中文占两个字符位置
def gbkwordlen(u):
    if is_number(u) or is_alphabet(u):
        return 1
    return 2

# 计算文本显示宽度
def gbkwordslen(uw):
    i = 0
    for u in uw:
        i += gbkwordlen(u)
    return i

def trunc_word(uw, len):
    l = 0
    i = 1
    for u in uw:
        l += gbkwordlen(u)
        if l > len:
            return uw[:i-1]
        i += 1
    return uw

a = u"更新a至1209期"
print trunc_word(a, 6)
print gbkwordslen(a)

 

分享到:
评论

相关推荐

    python读取指定字节长度的文本方法

    1、使用python读取指定长度的文本; 2、使用python读取某一范围内的文本。 Python代码 test.txt文本内包含的字符串为“AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDD”,A,B,C,D均为8个 # -*- coding:utf-8 -*- text_file = ...

    python读取文本文件实现猜单词

    python读取文本文件实现猜单词实现: 1、计算机必须从文本文件 gone with the wind.txt 中随机选择一个单词命名为 secretWord,单词可能包含大写和小写字母,为降低猜测难度,需要将单词转换为全部小写字母。 2、...

    simhash_python_文本筛选_simhash_

    SimHash的巧妙之处在于,即使文本有微小的变化,其对应的SimHash值也只是少数位发生变化,这使得通过比较SimHash值可以快速判断两个文本的相似度。 在Python中,实现SimHash通常包括以下几个步骤: 1. **预处理**...

    python将文本转换成图片输出的方法

    同时,代码中还包含了变量打印输出的部分,帮助我们了解文本每行的长度和行数,对调试和优化代码提供了帮助。 最后,文中提到由于OCR技术原因可能造成文字识别错误或遗漏,因此在实际应用中应当进行仔细的检查和...

    Python中文文本分析(期末大作业).rar

    这个作业涉及到多个重要的Python技术和数据可视化方面,包括文本读取、词云图绘制、人物出场统计、社交网络关系建模以及章节字数分析。以下是这些知识点的详细说明: 1. **Python文本处理**:Python是一种非常适合...

    统计多个文本长度

    Python的`open()`函数可以用来打开文件,然后通过`read()`或`readlines()`方法读取文本。对于大文件,可能需要使用`readline()`或分块读取以避免内存溢出。 3. **文本长度计算**:读取到文本内容后,计算文本长度...

    Python-命令行文本处理

    在IT领域,Python语言因其简洁明了的语法和强大的功能而深受程序员喜爱,尤其是在命令行文本处理方面。本文将深入探讨“Python-命令行文本处理”这一主题,讲解如何利用Python进行高效、灵活的文本操作。 一、...

    python判断字符长度的代码.docx

    在Python编程语言中,了解如何判断字符长度是基础且至关重要的技能。这主要涉及到Python的字符串(str)数据类型以及内置的`len()`函数。字符串是由一个或多个字符组成的序列,可以用于存储文本信息。在Python中,字符...

    python实现中文文本分句的例子

    在处理过程中,利用循环和条件判断,将非终结符的单词累加到`oneSentence`字符串中,当遇到终结符或超过一定长度的句子时,将其添加到`sentenceList`中,最后写入到输出文件(`outfile`)。 3. **优化处理**: ...

    python读取txt文件,去掉空格计算每行长度的方法

    在Python编程语言中,处理文本文件是常见的任务之一。本文将详细介绍如何使用Python读取TXT文件,并去除其中的空格,然后计算每行的字符数(不包括空格)。这个方法对于分析文本数据、统计文本特征或者进行文本...

    K-Means文本聚类python实现

    在这个"K-Means文本聚类python实现"的项目中,我们将深入探讨如何利用Python进行文本预处理、构建特征向量,并最终应用K-Means算法进行聚类。 首先,文本预处理是关键步骤,包括以下几部分: 1. **去除停用词**:...

    python统计文本文件内单词数量的方法

    在Python编程语言中,统计文本文件内的单词数量是一项常见的任务,尤其在数据分析、文本处理或者自然语言处理领域。本文将详细讲解如何通过Python实现这一功能,涉及到的关键知识点包括文件操作、字符串处理以及列表...

    Python-Keras文本深度学习数据预处理工具

    通常,文本预处理的完整流程包括:读取文本数据、分词、创建词汇表、编码文本为整数序列、设置最大序列长度并进行填充或截断,最后输入到模型进行训练。 7. **数据集准备**: 在hamelsmu-ktext-5bd49a5这个压缩包...

    单词统计(Python)

    - **文件操作**:利用Python内置的文件处理功能读取文本文件。 #### 代码解析 1. **文件读取** ```python file = open(r'c:\Python34\file\english.txt') try: article_read = file.read() finally: file....

    读取SEGY文件并图形和数据显示

    本教程将详细讲解如何使用C++语言读取SEGY文件,并进行图形和数据显示。 首先,理解SEGY格式至关重要。SEGY是由国际勘探地球物理家学会(SEG)制定的一种标准,它包含了地震记录的原始数据、元数据以及相关的文本...

    Python新闻等文本情感分析实战源码分享

    file()`函数读取TXT文件数据,`build_vocab()`构建词汇表,`read_vocab()`将词汇表转化为词ID映射,`read_category()`处理分类标签,`to_words()`将ID转换回原始文字,而`process_file()`则将文本数据转化为固定长度...

    Python批量提取中英文混排中英文文本.zip

    # 读取文本文件 with open('Little Prince小王子.txt', 'r', encoding='utf-8') as file: content = file.read() # 定义正则表达式,匹配连续的英文字符 regex = re.compile(r'[a-zA-Z]+') # 使用findall()找到...

    python降重脚本程序

    哈希函数可以快速地将任意长度的输入转化为固定长度的输出,这在处理大量文本时非常有用。 2. **requests**: 这是一个非常流行的Python库,用于发送HTTP请求。在降重脚本中,可能利用这个库来获取在线的资源,如同...

    python123作业——08字符串

    通过这些练习,学习者可以深入理解Python字符串的特性,增强字符串操作能力,并掌握处理文本数据的基本技巧。此外,这些题目也涉及到了一些基础的数据验证、隐私保护和简单加密等实际应用问题,有助于提升实际编程...

Global site tag (gtag.js) - Google Analytics