row.split, чтобы взять строку, разделенную запятыми, как один столбец - PullRequest
0 голосов
/ 31 октября 2018

У меня есть два столбца - Wkt и LND_STATUS как CSV-файл. Я хочу вставить это в БД в виде двух столбцов. Однако столбец WKT имеет значения с ,. как использовать row.split (,), но игнорировать , в строке wkt.

Необходимо вставить полную строку как один столбец.

 batch.put_item(Item={
                            'WKT': row.split(',')[0],
                            'LND_STATUS': row.split(',')[1]})

WKT LND_STATUS
MULTIPOLYGON (((103.869724493054 1.36120318421679,103.869710781572 1.36118900486298,103.869697400306 1.36120191041511,103.869690996084 1.36119528058237,103.869648868277 1.36123584376291,103.869637050138 1.36122339265608,103.869642642738 1.36121800704654,103.869623683539 1.36119803361899,103.869618044214 1.36120346437506,103.869581136828 1.36116458537731,103.869611330112 1.36113551055288,103.869618971644 1.3611434190657,103.869643665633 1.36111959860761,103.869608828588 1.36108357288402,103.869583781366 1.36110816661464,103.869590290686 1.36111488948709,103.869548566305 1.36115585882782,103.869657705349 1.36126876523403,103.869724493054 1.3612031821679)))  P LAND
MULTIPOLYGON (((103.88155761112 1.36080286570841,103.881439254321 1.36092432229536,103.881467976679 1.36095308237611,103.881492380399 1.3609283664127,103.881508135246 1.36094412199864,103.881516071228 1.36093608110234,103.88159630643 1.36085448775854,103.881575131181 1.36083298791314,103.88158135 1.36082668979684,103.88155761112 1.36080286570841)))  P LAND

LND_STATUS должен иметь P LAND, а wkt должен содержать полную строку, отличную от P LAND.

Мой ввод - csv и используйте row.split(,) для доступа к отдельному столбцу. Мне необходимо используйте row.split(,) но пропустите , в первом столбце

1 Ответ

0 голосов
/ 31 октября 2018

Ваш CSV разделен двойным пробелом ' ', за исключением заголовка. проверьте, не опечатка ли это.

wkt_, lnd_status_ = row.split('  ')

Редактировать: Разобрать часть wkt_.

Я рекомендую использовать для этого библиотеку (Shapely в этом примере)

import shapely.wkt

row = 'MULTIPOLYGON (((103.869724493054 1.36120318421679,103.869710781572 1.36118900486298,103.869697400306 1.36120191041511,103.869690996084 1.36119528058237,103.869648868277 1.36123584376291,103.869637050138 1.36122339265608,103.869642642738 1.36121800704654,103.869623683539 1.36119803361899,103.869618044214 1.36120346437506,103.869581136828 1.36116458537731,103.869611330112 1.36113551055288,103.869618971644 1.3611434190657,103.869643665633 1.36111959860761,103.869608828588 1.36108357288402,103.869583781366 1.36110816661464,103.869590290686 1.36111488948709,103.869548566305 1.36115585882782,103.869657705349 1.36126876523403,103.869724493054 1.36120318421679)))  P LAND'

wkt_, lnd_status_ = row.split('  ')

multypolygone = shapely.wkt.loads(wkt_)
for polygone in multypolygone:
    for lng, lat in polygone.exterior.coords:
        print((lng, lat))

выход

(103.869724493054, 1.36120318421679)
(103.869710781572, 1.36118900486298)
(103.869697400306, 1.36120191041511)
(103.869690996084, 1.36119528058237)
(103.869648868277, 1.36123584376291)
(103.869637050138, 1.36122339265608)
(103.869642642738, 1.36121800704654)
(103.869623683539, 1.36119803361899)
(103.869618044214, 1.36120346437506)
(103.869581136828, 1.36116458537731)
(103.869611330112, 1.36113551055288)
(103.869618971644, 1.3611434190657)
(103.869643665633, 1.36111959860761)
(103.869608828588, 1.36108357288402)
(103.869583781366, 1.36110816661464)
(103.869590290686, 1.36111488948709)
(103.869548566305, 1.36115585882782)
(103.869657705349, 1.36126876523403)
(103.869724493054, 1.36120318421679)
...