读取文件并剥离\ n并拆分列表

时间:2017-11-03 20:46:13

标签: python python-3.x split strip

我有一个作业,我必须阅读一个文件“words.csv”:

https://jobs.et/jobs/?searchId=1509738711.5142&action=search&page=2

我应该按照以下方式打印出来:

Hemuli,Muumipappa,13,4
Abbath,Fenriz,6,6

到目前为止我的代码:

Hemuli 13 - 4 Muumipappa
Abbath 6 - 6 Fenriz

这为我提供了以下 def nayta_tulokset(words): with open(words) as tulos: tulokset = tulos.read() a = tulokset.split(",") print(a)

list

这正是我想要的,但如何继续删除 \ n ? “4”和“Abbath”应该在他们自己的索引中。似乎无法弄明白......之后我可以使用索引并使用format()打印出来。

4 个答案:

答案 0 :(得分:4)

您可以在阅读时使用splitlines()

def nayta_tulokset(words):
    with open(words) as tulos:
        return tulos.read().splitlines()

# output: ['Hemuli,Muumipappa,13,4', 'Abbath,Fenriz,6,6']

然后拆分字符串.split(',')

for i in nayta_tulokset(words):
    _f = i.split(",")
    print("{} {} - {} {}".format(_f[0], _f[-2], _f[-1], _f[1]))

# Hemuli 13 - 4 Muumipappa
# Abbath 6 - 6 Fenriz

答案 1 :(得分:1)

为了获得您想要的输出,您需要单独读取每一行并按预期打印出来。

在您的代码上建立如何继续

dd["one"].extend(l)

而不是使用def nayta_tulokset(words): with open(words) as tulos: for line in tulos.read().split('\n'): a = line.split(",") print("{} {} - {} {}".format(a[0], a[2], a[3], a[1])) ,您可以使用tulos.read().split('\n'),它会将您的文件读入一个行列表。因此在重构之后,代码将如下所示:

tulos.readlines()

更多详情: 我想代码中唯一有些含糊不清的部分如下:

def nayta_tulokset(words):
    with open(words) as tulos:
        for line in tulos.readlines():
           a = line.split(",")
           print("{} {} - {} {}".format(a[0], a[2], a[3], a[1]))

这相当于以下字符串连接:

"{} {} - {} {}".format(a[0], a[2], a[3], a[1])

答案 2 :(得分:1)

使用list comprehension和上述字符串格式的解决方案可以是:

def nayta_tulokset(words):
    with open(words, 'r') as f:
        return list(map(lambda x:"{} {} - {} {}".format(x[0],x[2],x[3],x[1]), map(lambda x:x.split(','),f.read().split())))

所以

nayta_tulokset('words.csv')
['Hemuli 13 - 4 Muumipappa', 'Abbath 6 - 6 Fenriz']

答案 3 :(得分:0)

您可能想要使用正则表达式。像这样:

import re

def nayta_tulokset(words):
    with open(words) as tulos:
        tulokset = tulos.read()
        #a = re.findall(r"[\w']+", tulokset)
        a = re.split(",\n", tulokset)

这应该给你:

['Hemuli', 'Muumipappa', '13', '4', 'Abbath', 'Fenriz', '6', '6']