[英]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.