将单词拆分为变量
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')]
我正在使用 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')]