代码之家  ›  专栏  ›  技术社区  ›  Prasanna Nandakumar

row.split将逗号分隔的字符串作为一列

  •  0
  • Prasanna Nandakumar  · 技术社区  · 6 年前

    我有两列- 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
    

    LNDI状态 应该有 P LAND WKT 应该有完整的字符串,而不是 普兰 .

    我的输入是csv并使用 row.split(,) 访问单个列。我需要 使用 分割(,) 但是跳过 , 在第一列

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ghilas BELHADJ    6 年前

    你的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)