簡體   English   中英

讀取文件並剝離\\ n並拆分為列表

[英]Read file and strip \n and split for list

我有一個作業,其中我必須讀取文件“ words.csv”:

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

['Hemuli', 'Muumipappa', '13', '4\nAbbath', 'Fenriz', '6', '6']

正是我想要的是什么,但是我該如何簡化\\ n呢? “ 4”和“ Abbath”應位於它們自己的索引之一中。 似乎無法弄清楚...之后,我可以使用索引並使用format()打印出來。

您可以在閱讀時使用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

為了獲得所需的輸出,您需要分別閱讀每一行並按預期打印出來。

在您的代碼上建立,這里您可以繼續進行

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.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])

這等效於以下字符串連接:

 a[0] +" " + a[2] +" - " + a[3] + " " +a[1]

利用列表理解和上述字符串格式的解決方案可能是:

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']

您可能要使用正則表達式。 像這樣:

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']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM