Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取一个文本文件并仅显示其中的一部分,其中一部分在python中_Python_Python 3.3 - Fatal编程技术网

读取一个文本文件并仅显示其中的一部分,其中一部分在python中

读取一个文本文件并仅显示其中的一部分,其中一部分在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 因此,我试图找到一种方法来打印这首歌,但只显示歌曲名称中每个单词的第一个字母和整个

因此,我在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

只是想知道如果您的歌曲存储在“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]

  • 现在,用另一个列表完成全部任务。我使用了lambda函数来清洁

    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]

  • 现在,用另一个列表完成全部任务。我使用了lambda函数来清洁

    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,抱歉。现在修好了。我忘记了最后一个代码块中的一个行溢出标记“`”。现在应该可以工作了。或者只是把它放在一行。