文件排版2.2 (python)

项目场景:

提示:这里简述项目相关背景:

python练习题


问题描述:

提示:这里描述项目中遇到的问题:

英文电影中参演人员名单一般以某种方式进行排版显示。给定一个未排版的文件listin.txt,该文件中每行参演人员名单由冒号’:'分隔成前后两部分,但格式杂乱无章,单词(由除空格和水平制表符之外的其它字符构成)之间可能有多个空格或水平制表符分隔。编写程序,要求将其按如下排版规则排版输出到另一个文件listout.txt中:

1.从标准输入读取一整数,作为排版后所有各行冒号’:‘在一行中的固定位置;假设输入的整数肯定大于排版后所有各行冒号’:'前的字符个数,位置从1开始计数;

2.冒号’:‘左边的单词串以冒号为基准右对齐,左边的第一个单词之前如果有多余的位置,则以空格填充;冒号’:‘右边的单词串以冒号’:'为基准左对齐,最后一个单词后只有回车换行符,不再有其它字符;

3.冒号’:'左右两边的单词间都只有一个空格分隔,并且要求冒号两边各有一个空格与单词分隔。

假设输入文件中每行字符个数不超过100。

【输入形式】

待排版的参演人员名单从当前目录下的listin.txt文件中读入;表示冒号’:'位置的整数从标准输入读入。

【输出形式】

排版后的参演人员名单输出到当前目录下的listout.txt中。

【输入样例】

假设文件listin.txt内容为:

Digital Intermediate by : EFILM

Supervising Digital Colorist : STEVEN J. SCOTT

Second Colorist :ANDREW FRANCIS

Digital Intermediate Producer:LOAN PHAN

Digital Intermediate Editor: DEVON MILLER

表示冒号固定位置的整数为:40

【输出样例】

文件listout.txt中的内容应为:


原因分析:

提示:这里填写问题的分析:

将每一行以冒号“:”分割,分离成两个字符串,分别处理。


解决方案:

提示:这里填写该问题的具体解决方案:

def type_set(file_name, out_file_name, num):
    data_in = open(file_name)
    data_out = open(out_file_name, 'w')
    for line in data_in:
        str1 = line.split(':')[0].strip()
        str1 = ' '.join(str1.split()) + ' '
        while len(str1) < num:
            str1 = ' ' + str1
        str2 = line.split(':')[1].strip()
        str2 = ' ' + ' '.join(str2.split())
        data_out.write(str1 + ':' + str2 + '\n')
    data_in.close()
    data_out.close()

type_set('listin.txt', 'listout.txt', 40)

strip() 函数
strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。
格式:
声明:s为字符串,rm为要删除的字符序列
s.strip(rm) :删除s字符串中开头、结尾处,位于 rm删除序列的字符

与之有关的还有:
s.lstrip(rm) :删除s字符串中开头处,位于 rm删除序列的字符

s.rstrip(rm) :删除s字符串中结尾处,位于 rm删除序列的字符

おすすめ

転載: blog.csdn.net/qq_53144843/article/details/121084741