在x字符后拆分字符串

2024-09-29 23:28:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图创建一个程序,使创建一个3个字母的花押字任何名称输入到函数通过一个文本文件。这是密码!在

output = 0
output_str = []
out = []

with open('Prob01.in.txt') as f:
    lines = f.read()
    for i in lines:
        if not i.isdigit():
            output_str.append(i)
    result = ''.join(output_str)
    result = result.split()
    for names in result:
        result = names[0].title()
        out.append(result)
    print ''.join(out)

这是文本文件!在

^{pr2}$

我想要的结果是:

FDR
GDP
SAJ

但是,我得到了:

FDRGDPSAJRJCFDH

我想我需要在x个字符之后使用.split(),在本例中是3个字符,但是我要如何实现呢?在

请记住,我对Python还很陌生,如果有更好的方法,我很抱歉。我很想知道如果有。在

谢谢你!在

附加:

我还需要将结果输出到文件中,我尝试了:

output.write(''.join(monogram))

输出设置为[],结果全部打印在一行中。在

FDRGDPSAJRJCFDH

Tags: in程序foroutputnamesresultoutsplit
3条回答

您可以在list comprehension内获得所需的输出,如下例所示:

我假设您的输入文件名为input_file

data = (k.rstrip().split() for k in open("input_file", 'r'))
subfinal = ("".join(j[0].upper() for j in k if not j.isdigit()) for k in data)
final = [k for k in subfinal if k != '']
for k in final:
    print(k)

输出:

^{pr2}$

在将字符串发送到联接之前,需要将字符串拆分为3个字符段,并将联接更改为\n以便在每个人的姓名之间插入一个换行符:

output = 0
output_str = []
out = []

with open('Prob01.in.txt') as f:
    lines = f.read()
    for i in lines:
        if not i.isdigit():
            output_str.append(i)
    result = ''.join(output_str)
    result = result.split()
    for names in result:
        result = names[0].title()
        out.append(result)
    print '\n'.join(map(''.join, zip(*[iter(out)]*3)))

输出:

^{pr2}$

虽然更好的方法可能是使用regex:

import re
with open('Prob01.in.txt') as f:
    for m in re.findall(r"([a-zA-Z])\S* ([a-zA-Z])\S* ([a-zA-Z])\S*", f.read().upper()):
        print ''.join(m)

输出:

^{pr2}$

试试这个:

import re

with open('Prob01.in.txt', 'r') as f, open('output.txt', 'w+') as output:
    monograms = []

    lines = f.readlines()
    pattern = re.compile("^\D+\n")  # Any non-digit simbols in line
    name_list = filter(lambda line: re.match(pattern, line), lines)
    for name in name_list:
        monograms.append(''.join(map(lambda x: x[0].title(), name.split())))

    output.write('\n'.join(monograms))

或者

^{pr2}$

相关问题 更多 >

    热门问题