python print 输出对齐 包含中文无法对齐

首先,先简单介绍一下,print自己有对齐的方式

下面的,就是给定字符长度10个字符长度,对齐方式为左边对齐,空余的字符采用 * 填充

string = "1234567"
print(string.ljust(10,"*"))

当然了,我整理了三个方式,左右中,一起打印出来了

string = "1234567"
print(string.ljust(10,"*"))#左
print(string.center(10,"*"))#中
print(string.rjust(10,"*"))#右

综上就会有一个不错的打印结果如下:

print("\n\n")
print("Name".ljust(10," "),end="")
print("Price".ljust(10," "),end="")
print("")
print("Noodle".ljust(10," "),end="")
print("10RMB".ljust(10," "),end="")
print("")
print("Meat".ljust(10," "),end="")
print("40RMB".ljust(10," "),end="")
print("\n\n")

但是当你将字符换为中文的时候,你就会发现它的结果就不那么尽人意了

print("\n\n")
print("名字".ljust(10," "),end="")
print("价格".ljust(10," "),end="")
print("")
print("面条".ljust(10," "),end="")
print("10元".ljust(10," "),end="")
print("")
print("肉".ljust(10," "),end="")
print("40元".ljust(10," "),end="")
print("\n\n")

原因很简单,因为中文字符默认是全角输出,而英文字符默认为半角, 半角和全角就像英文的  "," 和中文的 "," ,中文的逗号后面会更出一个小空格来,所以造成了这样的不规则

解决方法:

将非半角全部转换为半角,话不多说函数如下,调用方法我写在函数的最顶端了

'''
调用方法
#左边对齐
string1 = "字符串123"
result = duiqi(string1,10,"left")#对齐字符串,长度,对齐方式
print(result)
#右边对齐
string1 = "字符串123"
result = duiqi(string1,10,"right")#对齐字符串,长度,对齐方式
print(result)
#居中对齐这个有点麻烦,例如 “123” ,对齐长度 6 ,要补三个空格,前面一个后面两个还是前面两个后面一个,这个是可以设置的
对齐的方式有 center0 center1 center2
center1:前面的空格更少,后面的更多
center2:后面的空格更少,前面的更多
center0:两边空格一样多(需要字符合理——例: 字符串“123”, 长度为 “5”,不然要报错)
'''
def duiqi(string,length,way):
    if(way == "left"):
        difference = length - len(string)  # 计算限定长度时需要补齐多少个空格
        if difference == 0:  # 若差值为0则不需要补
            return string
        elif difference < 0:
            print('错误:限定的对齐长度小于字符串长度!')
            return None
        new_string = ''
        space = ' '
        for i in string:
            codes = ord(i)  # 将字符转为ASCII或UNICODE编码
            if codes <= 126:  # 若是半角字符
                new_string = new_string + chr(codes+65248) # 则转为全角
            else:
                new_string = new_string + i  # 若是全角,则不转换
        return new_string + space*(difference)  # 返回补齐空格后的字符串
    elif(way == "right"):
        difference = length - len(string)  # 计算限定长度时需要补齐多少个空格
        if difference == 0:  # 若差值为0则不需要补
            return string
        elif difference < 0:
            print('错误:限定的对齐长度小于字符串长度!')
            return None
        new_string = ''
        space = ' '
        for i in string:
            codes = ord(i)  # 将字符转为ASCII或UNICODE编码
            if codes <= 126:  # 若是半角字符
                new_string = new_string + chr(codes+65248) # 则转为全角
            else:
                new_string = new_string + i  # 若是全角,则不转换
        return  space*(difference) + new_string   # 返回补齐空格后的字符串
    elif(way == "center0"):
        difference = length - len(string)  # 计算限定长度时需要补齐多少个空格
        if difference == 0:  # 若差值为0则不需要补
            return string
        elif difference < 0:
            print('错误:限定的对齐长度小于字符串长度!')
            return None
        new_string = ''
        space = ' '
        for i in string:
            codes = ord(i)  # 将字符转为ASCII或UNICODE编码
            if codes <= 126:  # 若是半角字符
                new_string = new_string + chr(codes+65248) # 则转为全角
            else:
                new_string = new_string + i  # 若是全角,则不转换
        return  space*(int(difference/2)) + new_string + space*(int(difference/2))   # 返回补齐空格后的字符串
    elif(way == "center2"):
        difference = length - len(string)  # 计算限定长度时需要补齐多少个空格
        if difference == 0:  # 若差值为0则不需要补
            return string
        elif difference < 0:
            print('错误:限定的对齐长度小于字符串长度!')
            return None
        new_string = ''
        space = ' '
        for i in string:
            codes = ord(i)  # 将字符转为ASCII或UNICODE编码
            if codes <= 126:  # 若是半角字符
                new_string = new_string + chr(codes+65248) # 则转为全角
            else:
                new_string = new_string + i  # 若是全角,则不转换
        return  space*(int(difference/2+1)) + new_string + space*(int(difference/2))        
    elif(way == "center1"):
        difference = length - len(string)  # 计算限定长度时需要补齐多少个空格
        if difference == 0:  # 若差值为0则不需要补
            return string
        elif difference < 0:
            print('错误:限定的对齐长度小于字符串长度!')
            return None
        new_string = ''
        space = ' '
        for i in string:
            codes = ord(i)  # 将字符转为ASCII或UNICODE编码
            if codes <= 126:  # 若是半角字符
                new_string = new_string + chr(codes+65248) # 则转为全角
            else:
                new_string = new_string + i  # 若是全角,则不转换
        return  space*(int(difference/2)) + new_string + space*(int(difference/2 + 1))   # 返回补齐空格后的字符串
    elif(way == "center2"):
        difference = length - len(string)  # 计算限定长度需要补齐多少个空格
        if difference == 0:  # 若差值为0则不需要补
            return string
        elif difference < 0:
            print('错误:限定的对齐长度小于字符串长度!')
            return None
        new_string = ''
        space = ' '
        for i in string:
            codes = ord(i)  # 将字符转为ASCII或UNICODE编码
            if codes <= 126:  # 若是半角字符
                new_string = new_string + chr(codes+65248) # 则转为全角
            else:
                new_string = new_string + i  # 若是全角,则不转换
        return  space*(int(difference/2+1)) + new_string + space*(int(difference/2))   # 返回补齐空格后的字符串

那么使用了上面的函数后,运行的代码截图就应该为

代码如下:

'''
调用方法
#左边对齐
string1 = "字符串123"
result = duiqi(string1,10,"left")#对齐字符串,长度,对齐方式
print(result)
#右边对齐
string1 = "字符串123"
result = duiqi(string1,10,"right")#对齐字符串,长度,对齐方式
print(result)
#居中对齐这个有点麻烦,例如 “123” ,对齐长度 6 ,要补三个空格,前面一个后面两个还是前面两个后面一个,这个是可以设置的
对齐的方式有 center0 center1 center2
center1:前面的空格更少,后面的更多
center2:后面的空格更少,前面的更多
center0:两边空格一样多(需要字符合理——例: 字符串“123”, 长度为 “5”,不然要报错)
'''
def duiqi(string,length,way):
    if(way == "left"):
        difference = length - len(string)  
        if difference == 0:  # 若差值为0则不需要补
            return string
        elif difference < 0:
            print('错误:限定的对齐长度小于字符串长度!')
            return None
        new_string = ''
        space = ' '
        for i in string:
            codes = ord(i)  # 将字符转为ASCII或UNICODE编码
            if codes <= 126:  # 若是半角字符
                new_string = new_string + chr(codes+65248) # 则转为全角
            else:
                new_string = new_string + i  # 若是全角,则不转换
        return new_string + space*(difference)  # 返回补齐空格后的字符串
    elif(way == "right"):
        difference = length - len(string)  
        if difference == 0:  # 若差值为0则不需要补
            return string
        elif difference < 0:
            print('错误:限定的对齐长度小于字符串长度!')
            return None
        new_string = ''
        space = ' '
        for i in string:
            codes = ord(i)  # 将字符转为ASCII或UNICODE编码
            if codes <= 126:  # 若是半角字符
                new_string = new_string + chr(codes+65248) # 则转为全角
            else:
                new_string = new_string + i  # 若是全角,则不转换
        return  space*(difference) + new_string   # 返回补齐空格后的字符串
    elif(way == "center0"):
        difference = length - len(string)  
        if difference == 0:  # 若差值为0则不需要补
            return string
        elif difference < 0:
            print('错误:限定的对齐长度小于字符串长度!')
            return None
        new_string = ''
        space = ' '
        for i in string:
            codes = ord(i)  # 将字符转为ASCII或UNICODE编码
            if codes <= 126:  # 若是半角字符
                new_string = new_string + chr(codes+65248) # 则转为全角
            else:
                new_string = new_string + i  # 若是全角,则不转换
        return  space*(int(difference/2)) + new_string + space*(int(difference/2))   # 返回补齐空格后的字符串
    elif(way == "center2"):
        difference = length - len(string)  
        if difference == 0:  # 若差值为0则不需要补
            return string
        elif difference < 0:
            print('错误:限定的对齐长度小于字符串长度!')
            return None
        new_string = ''
        space = ' '
        for i in string:
            codes = ord(i)  # 将字符转为ASCII或UNICODE编码
            if codes <= 126:  # 若是半角字符
                new_string = new_string + chr(codes+65248) # 则转为全角
            else:
                new_string = new_string + i  # 若是全角,则不转换
        return  space*(int(difference/2+1)) + new_string + space*(int(difference/2))        
    elif(way == "center1"):
        difference = length - len(string)  
        if difference == 0:  # 若差值为0则不需要补
            return string
        elif difference < 0:
            print('错误:限定的对齐长度小于字符串长度!')
            return None
        new_string = ''
        space = ' '
        for i in string:
            codes = ord(i)  # 将字符转为ASCII或UNICODE编码
            if codes <= 126:  # 若是半角字符
                new_string = new_string + chr(codes+65248) # 则转为全角
            else:
                new_string = new_string + i  # 若是全角,则不转换
        return  space*(int(difference/2)) + new_string + space*(int(difference/2 + 1))   # 返回补齐空格后的字符串
    elif(way == "center2"):
        difference = length - len(string)  
        if difference == 0:  # 若差值为0则不需要补
            return string
        elif difference < 0:
            print('错误:限定的对齐长度小于字符串长度!')
            return None
        new_string = ''
        space = ' '
        for i in string:
            codes = ord(i)  # 将字符转为ASCII或UNICODE编码
            if codes <= 126:  # 若是半角字符
                new_string = new_string + chr(codes+65248) # 则转为全角
            else:
                new_string = new_string + i  # 若是全角,则不转换
        return  space*(int(difference/2+1)) + new_string + space*(int(difference/2))   # 返回补齐空格后的字符串        
    
 
 
 
print("\n\n")
print(duiqi("名字",10,"left"),end="")
 
print(duiqi("价格",10,"left"),end="")
 
print("")
 
print(duiqi("面条",10,"left"),end="")
 
print(duiqi("10RMB",10,"left"),end="")
 
print("")
print(duiqi("肉",10,"left"),end="")
 
print(duiqi("40RMB",10,"left"),end="")
print("\n\n")

### 如何在 IntelliJ IDEA 中配置 Node.js 开发环境 #### 一、支持与插件安装 IntelliJ IDEA 社区版和 WebStorm 提供了对 Node.js 的支持。为了增强 IDE 对项目的理解和功能,可以通过安装 Node.js 插件来实现更高效的开发体验[^1]。 --- #### 二、Node.js 和 npm 路径的配置 要使 IntelliJ IDEA 支持 Node.js 环境,需手动配置 Node.js 和 npm 的路径: 1. 打开 **Settings** -> **Languages & Frameworks** -> **Node.js and NPM**。 2. 在该界面中分别指定已安装的 Node.js 及其关联的 npm 路径。通常情况下,在安装 Node.js 后会自动生成对应的 npm 文件夹,因此大多数时候只需选择正确的 Node.js 安装目录即可。如果未被自动检测到,则可手动输入路径[^2]。 --- #### 三、验证配置并测试运行 JavaScript 程序 完成以上步骤后,开发者可以在 IntelliJ IDEA 内部直接编辑和执行 JavaScript 文件。此时,IDE 将提供代码补全、语法高亮以及调试工具等功能,从而提升工作效率。 --- #### 四、进一步优化开发环境 虽然上述操作已经满足基本需求,但在实际项目开发过程中,往往需要针对特定场景做更多定制化调整。例如引入 Vue CLI 创建前端框架应用时,也可以借助 IntelliJ IDEA 实现快速构建服务端渲染页面的功能[^3]。 对于基于 Express 或其他框架的应用程序来说,同样适用类似的初始化过程;而当涉及到复杂依赖关系管理时,则应特别注意 `package.json` 文件中的字段定义及其版本控制策略[^4]。 以下是启动本地服务器的一个简单例子: ```javascript // server.js const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('Hello from Node.js!'); }); const PORT = process.env.PORT || 8080; app.listen(PORT, () => console.log(`Server started on port ${PORT}`)); ``` 运行此脚本之后访问地址 `http://localhost:8080/` 即可见效。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值