将单词拆分为变量

Split words into variables

我正在使用 Python 阅读 MP3 广播流,它打印出类似这样的内容

INXS~Disappear~RADIOSTATION~~MUSIC~~~360000~~~

我想将单词分开并放在它们自己的 table / 字段中。

上面是 Artist、SongName、RadioStation、MUSIC,一些我不知道是什么而且永远不会改变的数字。

我发现了一个叫做分词的东西,但不确定它是否有效。

我也不确定歌曲或艺术家姓名中的 space 是否会引起任何问题。 space 不是下划线或任何聪明的东西,它实际上是 space.

#!/usr/bin/env python
import urllib2
import datetime
import requests



stream_url = 'http://stream....'
request = urllib2.Request(stream_url)
try:
    request.add_header('Icy-MetaData', 1)
    response = urllib2.urlopen(request)
    icy_metaint_header = response.headers.get('icy-metaint')
    if icy_metaint_header is not None:
        metaint = int(icy_metaint_header)
        read_buffer = metaint+512
        content = response.read(read_buffer)
        title = content[metaint:].split("'")[1]
        print title
#       post_data = {'artist':'////', 'songname':'/////'}
#       post_response = requests.post(url='http:///////.co.uk', data=post_data)
        print datetime.datetime.now()
        import json


except:
     print 'null'
 #   print 'Error'
  #  print datetime.datetime.now()

拆分功能将为您完成此操作。 Python 文档

中有关字符串实用程序的更多信息

https://docs.python.org/2/library/stdtypes.html#str.split

 artist, song_name, radio_station, music, misc_number = string.split("~")

您想使用字符串的 split 方法:

stream = "INXS~Disappear~RADIOSTATION~~MUSIC~~~360000~~~"
parts = stream.split("~")

和python甚至可以直接将split方法返回的列表元素赋值给特定的变量:

artist, songname, radiostation, music, number = [x for x in stream.split("~") if x]

我使用了一个简单的列表理解来去除列表中的空元素。

您可以使用过滤器内置函数来删除空元素,而不是使用列表理解:

 artist, songname, radiostation, music, number = filter(len, stream.split("~"))
import re

st = 'INXS~Disappear~RADIOSTATION~~MUSIC~~~360000~~~'

names = ('artist', 'songname', 'radiostatino', 'music', 'number')

pp(list(zip(names,re.split(r'~+',st))))

[('artist', 'INXS'),
 ('songname', 'Disappear'),
 ('radiostatino', 'RADIOSTATION'),
 ('music', 'MUSIC'),
 ('number', '360000')]