读取一个文本文件并仅显示其中的一部分,其中一部分在python中
因此,我在python 3.3中创建了一个代码,在该代码中,您必须仅使用歌曲的第一个字母和艺术家来猜测歌曲,因此我将文本文件格式化如下:读取一个文本文件并仅显示其中的一部分,其中一部分在python中,python,python-3.3,Python,Python 3.3,因此,我在python 3.3中创建了一个代码,在该代码中,您必须仅使用歌曲的第一个字母和艺术家来猜测歌曲,因此我将文本文件格式化如下: Domo23-Tyler The Creator Happy hour-The Housemartins Charming Man-The Smiths Toaster-Slowthai Two time-Jack Stauber etc... C M-The Smiths 因此,我试图找到一种方法来打印这首歌,但只显示歌曲名称中每个单词的第一个字母和整个
Domo23-Tyler The Creator
Happy hour-The Housemartins
Charming Man-The Smiths
Toaster-Slowthai
Two time-Jack Stauber
etc...
C M-The Smiths
因此,我试图找到一种方法来打印这首歌,但只显示歌曲名称中每个单词的第一个字母和整个艺术家名称,如下所示:
Domo23-Tyler The Creator
Happy hour-The Housemartins
Charming Man-The Smiths
Toaster-Slowthai
Two time-Jack Stauber
etc...
C M-The Smiths
只是想知道如果您的歌曲存储在“songs.txt”中,是否有人可以帮助您,下面是我的解决方案:
import random
# Without the "with as" statement"
f = open("songs.txt", "r")
list_of_songs = []
text_of_songs = f.read()
#Closing the file - Thank you @destoralater
f.close()
for song in text_of_songs.split("\n"):
list_of_songs.append(song)
def get_random_song_clue(list_of_songs):
song = random.choice(list_of_songs)
title, artis = song.split("-")
title_clue = " ".join([letter[0] for letter in title.split(" ")])
return f"{title_clue}-{artis}"
print(get_random_song_clue(list_of_songs))
一个随机输出:
D-Tyler The Creator
如果您的歌曲存储在“songs.txt”中,我的解决方案如下:
import random
# Without the "with as" statement"
f = open("songs.txt", "r")
list_of_songs = []
text_of_songs = f.read()
#Closing the file - Thank you @destoralater
f.close()
for song in text_of_songs.split("\n"):
list_of_songs.append(song)
def get_random_song_clue(list_of_songs):
song = random.choice(list_of_songs)
title, artis = song.split("-")
title_clue = " ".join([letter[0] for letter in title.split(" ")])
return f"{title_clue}-{artis}"
print(get_random_song_clue(list_of_songs))
一个随机输出:
D-Tyler The Creator
假设您的数据在列表中,如下所示:
data = ["Domo23-Tyler The Creator",
"Happy hour-The Housemartins",
"Charming Man-The Smiths",
"Toaster-Slowthai",
"Two time-Jack Stauber"]
我将逐步为您构建最终代码
data[2]。拆分(“-”[0]
)
数据[2]。拆分(“-”[0]。拆分(“”
)
[word[0]用于数据[2]中的单词。拆分(“-”[0]。拆分(“”)
“”。连接([word[0]表示数据[2]中的单词。拆分(“-”[0]。拆分(”)
“”。加入([word[0]表示数据[2]中的word。拆分(“-”[0]。拆分(“”)+“-”+数据[2]。拆分(“-”[1]
hide_name = lambda song_record: \
" ".join([word[0] for word in song_record.split("-")[0].split(" ")]) \
+ "-" + song_record.split("-")[1]
[hide_name(record) for record in data]
上述列表的输出:
['D-Tyler The Creator',
'H h-The Housemartins',
'C M-The Smiths',
'T-Slowthai',
'T t-Jack Stauber']
编辑:请记住,这取决于您的歌曲记录中正好有一个“-”,它界定了歌曲名称和艺术家。如果歌曲名称或艺术家包含连字符,您将获得意外行为。假设您的数据在列表中,如下所示:
data = ["Domo23-Tyler The Creator",
"Happy hour-The Housemartins",
"Charming Man-The Smiths",
"Toaster-Slowthai",
"Two time-Jack Stauber"]
我将逐步为您构建最终代码
data[2]。拆分(“-”[0]
)
数据[2]。拆分(“-”[0]。拆分(“”
)
[word[0]用于数据[2]中的单词。拆分(“-”[0]。拆分(“”)
“”。连接([word[0]表示数据[2]中的单词。拆分(“-”[0]。拆分(”)
“”。加入([word[0]表示数据[2]中的word。拆分(“-”[0]。拆分(“”)+“-”+数据[2]。拆分(“-”[1]
hide_name = lambda song_record: \
" ".join([word[0] for word in song_record.split("-")[0].split(" ")]) \
+ "-" + song_record.split("-")[1]
[hide_name(record) for record in data]
上述列表的输出:
['D-Tyler The Creator',
'H h-The Housemartins',
'C M-The Smiths',
'T-Slowthai',
'T t-Jack Stauber']
编辑:请记住,这取决于您的歌曲记录中正好有一个“-”,它界定了歌曲名称和艺术家。如果歌曲名称或艺术家包含连字符,您将获得意外行为。请查看字符串切片和
split()
函数。您的工作产生了什么代码?这样我们就可以看到你的困境。看看字符串切片和split()
函数。你的工作产生了什么代码?大家好,我试着去实现那个代码,但是它说“as”是无效的语法。无论如何,它不是必需的,只是为了让代码更干净,我已经编辑了代码。但我认为它在Python3.3中是有效的。@ViktorKelemen——你不需要在某个时候调用f.close()
吗?这不是必需的,但却是正确的,建议你可以在“text\u of_songs=f.read()”行之后调用它。代码的作用是一样的。我已经编辑了我的代码。而不是f.read()
,应该使用和open('file')as f
约定,因为这样可以确保文件句柄自动关闭,因为不是所有Python实现都会在gc关闭文件句柄。嗨,我试图实现该代码,但它说“as”是无效的语法,这是没有必要的,反正它只是为了使代码更干净,我已经编辑了代码。但我认为它在Python3.3中是有效的。@ViktorKelemen——你不需要在某个时候调用f.close()
吗?这不是必需的,但却是正确的,建议你可以在“text\u of_songs=f.read()”行之后调用它。代码的作用是一样的。我已经编辑了我的代码。而不是f.read()
,应该使用带有open('file')的作为f
约定,因为这确保了文件句柄会自动关闭,因为并非所有Python实现都会在gc.Traceback时关闭文件句柄(最后一次调用):第78行,在+“-”+song\u record.split(“-”[1]TypeError:一元+的操作数类型错误:'str'@destoralater:oops,抱歉。现在修好了。我忘记了最后一个代码块中的一个行溢出标记“`”。现在应该可以工作了。回溯(最后一次调用):第78行,在+“-”+song_记录中。拆分(“-”[1]类型错误:一元+的操作数类型错误:'str'@destoralater:oops,抱歉。现在修好了。我忘记了最后一个代码块中的一个行溢出标记“`”。现在应该可以工作了。或者只是把它放在一行。