`

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、...

    Qt自定义QLabel滚动显示文本文字,label可根据文本长度自动开启滚动显示

    自定义QLabel控件,自动判断文本长度与显示框长度的大小,显示框太短,则自动滚动显示,否则正常显示,类似于广告屏的滚动播放效果,qt 5源码,编译测试通过。

    python使用socket 先读取长度,在读取报文内容示例

    主要介绍了python使用socket 先读取长度,在读取报文内容,涉及Python socket通信报文操作相关使用技巧,需要的朋友可以参考下

    Python 读取csv文件时数字变成科学计数法(含有e)

    读取csv时遇到一个长数字(比较长的数字,excel中长度超过16位后,会变成科学计数法显示)转换问题。在csv中正常显示全部数字,没有变成科学计数法,但用pd.read_csv后就变成了科学计数法显示, 如下图显示。这是个...

    花萼长度统计分析案例

    数据分析(二)Numpy科学计算库 --中的花萼长度统计分析案例中所需要的文本数据, 文本格式为 --CSV格式,读取CSV文件,对数据进行处理

    Huffman 编码图像无损压缩和解压缩 Python示例代码 哈夫曼编码

    pip install opencv-python numpy 2. 直接运行 main.py 脚本即可使用。 压缩原理: 1. 统计输入图像中每个像素值出现的频率,建立字符到频率的映射表 2. 根据频率使用最小堆构建 Huffman 树 3. 根据 Huffman 树为每个...

    Python语言基础:文件方法.pptx

    文件方法 文件方法 按字节读写文件 ...实例:读取文本的指定长度,并输出结果。 具体实现: 结果如下: 文件方法 2. 随机访问文件 在开发过程中,可能需要频繁的倒序或者插序读写。此时需要“seek()”函数。

    用Python读取Oracle函数返回值

    想到文本也可以传输信息,突然来了灵感,把返回值设置文本格式。  考虑到返回数据量可能会很大,varchar2类型长度吃紧,于是将返回值类型设置为clob。  我是用scott用户的测试表emp,这个是函数定义情况: 1 ...

    python实现密码强度校验

    本文实例为大家分享了python实现密码强度校验...以下是python的代码实现: """ 作者:zhengzhihui 版本:7.0 日期:2019/7/13 功能:判断密码强度 2.0功能:循环和终止 3.0功能:将密码保存到文本中 4.0功能:

    python-wavefile:通过Python方式访问音频文件

    格式,通道,长度,采样率...可以作为属性以及文本字符串进行访问 真正的多声道(不仅仅是单声道/立体声) 支持所有libsndfile格式,默认情况下为浮点编码 基于Numpy的界面 用于逐块读取的生成器 读取会重用同一...

    基于python的简单随机排序GUI界面化小程序

    判断已知数组的长度,然后生成等长的不重复的随机数数组 然后通过随机数组对保存有信息的数组进行索引生成行的数组即随机排序结果 所有结果的显示均通过tabulate的grid形式输出以保证整体的美观

    用 Windows “记事本”创建一个文本文件,其中每行包含一段英文,试读出文件的全部内容,并判断:(1)该文本文件共有多少行?(2)文件中以大写字母P开头的有多少行?(3)一行包含字

    题目:用 Windows “记事本”创建一个文本文件,其中每行包含一段英文,试读出文件的全部内容,并判断: (1)该文本文件共有多少行? (2)文件中以大写字母P开头的有多少行? (3)一行中包含字符最多的及包含字母...

    Python文件操作及内置函数flush原理解析

    1、打开文件得到文件句柄并赋值给一个变量 2、通过句柄对文件进行操作 3、关闭文件 示例文件 ‘你好呀’ ...#不指定打开编码,即python解释器默认编码,python2.*为ascii,python3.*为utf-8 f=open

    python读取oracle函数返回值

    想到文本也可以传输信息,就突然来了灵感,把返回值设置文本格式。 考虑到返回数据量可能会很大,varchar2类型长度吃紧,于是将返回值类型设置为clob。  我是用scott用户的测试表emp,这个是函数定义情况: ...

    精易模块v7.35[模块]

    7、新增“文本_取长度W”取一段文本的长度,中文和字母都算一个长度;。8、新增“外部组合框_查找”与“外部组合框_精确查找”查找外部组合框项目;。9、新增“LVM_”与“CB_”超级列表框消息与组合框消息常量值;。...

    基于深度学习的中文评论情感分类和智能客服研究与实现python源码+数据集+报告+使用说明.zip

    7、截长补短让所有“数字列表”长度都是一致,取tokens平均值并加上两个tokens的标准差作为最终长度,保证每个文本都是同样的长度可以避免不必要的错误 等等 【备注】更多项目运行说明及步骤见项目说明文档。

    Python读大数据txt

    好的方法是利用固定长度的缓冲区来不断读取文件内容。即通过yield。  在用Python读一个两个多G的txt文本时,天真的直接用readlines方法,结果一运行内存就崩了。  还好同事点拨了下,用yield方法,测试了下果然...

Global site tag (gtag.js) - Google Analytics