本文整理汇总了Python中normality.slugify函数的典型用法代码示例。如果您正苦于以下问题:Python slugify函数的具体用法?Python slugify怎么用?Python slugify使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了slugify函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: parse_file
def parse_file(path):
with open(path, 'rb') as fh:
ctx = json.load(fh)
if ctx['source_name'] not in ['MZ']:
return
all_name = slugify('%(source_name)s flexicadastre' % ctx, sep='_')
all_tbl = database[all_name]
all_tbl.delete()
layers = ctx.pop('layers')
for layer in layers:
lctx = ctx.copy()
lctx['layer_name'] = layer['name']
lctx['layer_id'] = layer['id']
del lctx['rest_url']
tbl_name = slugify('%(source_name)s %(layer_name)s' % lctx, sep='_')
tbl = database[tbl_name]
tbl.delete()
features = layer['data']['features']
print ' -> Generating:', tbl_name
print ' ', layer['name'], layer['id'], len(features)
for feature in features:
attrs = convrow(feature.get('attributes'))
attrs.update(lctx)
tbl.insert(attrs)
all_tbl.insert(attrs)
示例2: scrape_company
def scrape_company(self, data):
if self.COMPANIES_SCRAPED < self.COMPANY_OFFSET:
self.COMPANIES_SCRAPED += 1
logging.debug('skipping %s' % data.get('code', 'unknown'))
return
if self.COMPANIES_SCRAPED > self.MAX_COMPANIES + self.COMPANY_OFFSET:
logging.info('finished companies at no. %s' % self.COMPANIES_SCRAPED)
return
self.COMPANIES_SCRAPED += 1
logging.info('scraping %s' % data)
url = API_URL % data.get('ASX code')
data.update(requests.get(url).json())
if 'code' not in data:
return
data['Stock Info URL'] = url
data.pop('ASX code', None)
data.pop('primary_share', None)
data.pop('last_dividend', None)
data.pop('latest_annual_reports', None)
data.pop('products', None)
record = {}
for k, v in data.items():
record[slugify(k, sep='_')] = v
category = slugify(record['gics_industry_group'])
if category not in ['materials', 'energy']:
logging.info('skipping category %s' % category)
return
self.scrape_announcements(data)
示例3: make_filename
def make_filename(source, sep='-'):
if source is not None:
source = os.path.basename(source)
slugs = [slugify(s, sep=sep) for s in source.split('.')]
source = '.'.join(slugs)
source = source.strip('.').strip(sep)
return source
示例4: crawl
def crawl(self, directory=None, collection=None, meta={}):
collection = collection or directory
collection = Collection.create({
'foreign_id': 'directory:%s' % slugify(collection),
'label': collection
})
db.session.commit()
collection_id = collection.id
if os.path.isfile(directory):
self.crawl_file(collection_id, directory, meta)
directory = directory or os.getcwd()
directory = directory.encode('utf-8')
for (dirname, dirs, files) in os.walk(directory):
dirparts = [d for d in dirname.split(os.path.sep)
if d in SKIP_DIRECTORIES]
if len(dirparts):
continue
log.info("Descending: %r", dirname)
for file_name in files:
dirname = string_value(dirname)
file_name = string_value(file_name)
if file_name in SKIP_FILES:
continue
file_path = os.path.join(dirname, file_name)
self.crawl_file(collection_id, file_path, meta)
示例5: extract_address
def extract_address(ext, prefix, query):
if query is None:
return {}
data = {
prefix + '_official_name': ext.text(query+'OFFICIALNAME'),
prefix + '_address': ext.text(query+'ADDRESS'),
prefix + '_town': ext.text(query+'TOWN'),
prefix + '_postal_code': ext.text(query+'POSTAL_CODE'),
prefix + '_country': ext.attr(query+'COUNTRY', 'VALUE'),
prefix + '_attention': ext.text(query+'ATTENTION'),
prefix + '_phone': ext.text(query+'PHONE'),
prefix + '_email': ext.text(query+'EMAIL') or ext.text(query+'E_MAIL'),
prefix + '_fax': ext.text(query+'FAX'),
prefix + '_url': ext.text(query+'URL_GENERAL') or ext.text(query+'URL'),
prefix + '_url_buyer': ext.text(query+'URL_BUYER'),
prefix + '_url_info': ext.text(query+'URL_INFORMATION'),
prefix + '_url_participate': ext.text(query+'URL_PARTICIPATE')
}
if data[prefix + '_official_name'] is not None:
data[prefix + '_slug'] = slugify(data[prefix + '_official_name'])
for k, v in data.items():
if v is None:
del data[k]
return data
示例6: parse_file
def parse_file(path):
with open(path, 'rb') as fh:
ctx = json.load(fh)
if ctx['source_name'] not in ['TZ']:
return
for layer in ctx.get('layers'):
out = {
"type": "FeatureCollection",
"features": []
}
for fdata in layer.pop('data').get('features'):
attrs = get_attrs(fdata)
if not fdata.get('geometry', {}).get('rings'):
continue
props = dict(attrs)
props['layer'] = layer.get('name')
feature = {
'type': 'Feature',
'geometry': {
'type': 'Polygon',
'coordinates': fdata.get('geometry', {}).get('rings')
},
'properties': props
}
out['features'].append(feature)
name = slugify('%s %s' % (ctx['source_name'], layer.get('name')),
sep='_')
name = name + '.json'
with open(os.path.join(DEST_PATH, name), 'wb') as fh:
json.dump(out, fh)
示例7: by_country
def by_country(self, country):
country_slug = slugify(country)
for rig_data in self.rigs_data:
if slugify(rig_data.get('country')) != country_slug:
continue
rig_slug = self.make_entity(rig_data['name'], 'rig', raw=rig_data)
rig = self.entities[('rig', rig_slug)]
for role in ['owner', 'operator', 'manager']:
rig[role] = self.make_entity(rig_data.get(role), 'company')
rig['flag'] = self.make_entity(rig_data.get('flag'), 'rflag')
rig['location'] = self.make_entity(rig_data.get('country'),
'location')
return {'entities': self.entities.values()}
示例8: store_layer_to_db
def store_layer_to_db(data, layer, features):
"""Load a layer of features into a database table."""
# table names are generated from the name of the layer and
# the name of the country.
tbl_name = '%s %s' % (data['name'], layer['name'])
tbl_name = slugify(tbl_name, sep='_')
log.info(' -> %s: %s rows', tbl_name, len(features))
tbl = database[tbl_name]
# clear out all existing data.
tbl.delete()
rows = []
types = {}
for feature in features:
row = convrow(feature['attributes'])
for k, v in row.items():
if isinstance(v, (int, long)):
types[k] = BigInteger
row['layer_name'] = layer['name']
row['layer_id'] = layer['id']
row['source_name'] = data['name']
row['source_title'] = data['title']
row['source_url'] = data['url']
if QUERY['returnGeometry'] == 'true':
# store the geometry as JSON. not sure this is a
# great idea because it may make the resulting
# CSV files really hard to parse.
row['_geometry'] = json.dumps(feature['geometry'])
row['_attributes'] = json.dumps(feature['attributes'])
rows.append(row)
tbl.insert_many(rows, types=types)
# Dump the table to a CSV file
csv_file = '%s.csv' % tbl_name
log.info(' -> %s', csv_file)
dataset.freeze(tbl, prefix=DATA_PATH, filename=csv_file, format='csv')
示例9: store_layer_to_geojson
def store_layer_to_geojson(data, layer, features):
"""Store the returned data as a GeoJSON file."""
# skip if we're not loading geometries:
if QUERY['returnGeometry'] != 'true':
return
out = {
"type": "FeatureCollection",
"features": []
}
for fdata in features:
attrs = {}
for k, v in fdata.get('attributes').items():
k = k.lower().strip()
attrs[k] = v
if not fdata.get('geometry', {}).get('rings'):
continue
props = dict(attrs)
props['layer'] = layer.get('name')
out['features'].append({
'type': 'Feature',
'geometry': {
'type': 'Polygon',
'coordinates': fdata.get('geometry', {}).get('rings')
},
'properties': props
})
name = slugify('%s %s' % (data['name'], layer.get('name')), sep='_')
name = name + '.geojson'
log.info(' -> %s', name)
with open(os.path.join(DATA_PATH, name), 'wb') as fh:
json.dump(out, fh)
示例10: parse_file
def parse_file(path):
with open(path, 'rb') as fh:
ctx = json.load(fh)
#if ctx['source_name'] not in ['MZ']:
# return
layers = ctx.pop('layers')
for layer in layers:
lctx = ctx.copy()
lctx['layer_name'] = layer['name']
lctx['layer_id'] = layer['id']
lctx.pop('rest_url', None)
tbl_name = slugify('%(source_name)s %(layer_name)s' % lctx, sep='_')
tbl = database[tbl_name]
tbl.delete()
features = layer['data']['features']
print ' -> Generating:', tbl_name
print ' ', layer['name'], layer['id'], len(features)
for feature in features:
attrs = convrow(feature.get('attributes'))
attrs.update(lctx)
tbl.insert(attrs)
dataset.freeze(tbl, prefix=DEST_PATH, filename='%s.csv' % tbl_name, format='csv')
示例11: slugify
def slugify(mapping, bind, values):
""" Transform all values into URL-capable slugs. """
for value in values:
if isinstance(value, six.string_types):
value = transliterate(value)
value = normality.slugify(value)
yield value
示例12: make_filename
def make_filename(file_name, sep='-'):
if file_name is not None:
file_name = os.path.basename(file_name)
slugs = [slugify(s, sep=sep) for s in file_name.rsplit('.', 1)]
slugs = [s[:200] for s in slugs if s is not None]
file_name = '.'.join(slugs)
file_name = file_name.strip('.').strip(sep)
return file_name
示例13: load_countries
def load_countries():
if len(COUNTRIES):
return COUNTRIES
with open(os.path.join(DATA_FIXTURES, 'countries.csv'), 'r') as fh:
for row in unicodecsv.DictReader(fh):
name = slugify(row['name'], sep=' ').strip()
code = row['code'].strip().upper()
REQUESTED.append({'name': row['name'], 'code': code})
COUNTRIES[name] = code
return COUNTRIES
示例14: convert_row
def convert_row(row):
out = {}
for field, value in row.items():
field = slugify(field, sep='_')
value = value.strip()
# TODO handle excel dates etc.
if not len(value):
continue
out[field] = value
return out
示例15: create_fixtures
def create_fixtures():
if 'engine' not in SHARED:
conn = dataset.connect('sqlite://')
for table in ['companies', 'financials']:
with open(os.path.join(FIXTURE_PATH, table + '.csv'), 'r') as fh:
for row in unicodecsv.DictReader(fh):
data = {slugify(k, sep='_'): v for k, v in row.items()}
conn[table].insert(data)
SHARED['engine'] = conn.engine
return SHARED['engine']