Разбиение содержимого столбца в Excel - PullRequest
0 голосов
/ 25 марта 2020

У меня есть CSV с числом смертей на округ в США. Вот выдержка:


County totals,Total
New York City New York US,"15,597 confirmed"
Westchester New York US,"3,891 confirmed"
Nassau New York US,"2,869 confirmed"
Suffolk New York US,"1,880 confirmed"
King Washington US,"1,277 confirmed"
Cook Illinois US,"1,194 confirmed"

В Excel, как отделить название округа от штата и США. Я не могу использовать текст в столбцах, потому что в некоторых округах есть 1, 2 или даже 3 слова. То же самое с названиями штатов.

1 Ответ

0 голосов
/ 25 марта 2020

Как предлагается в комментариях, название штата может использоваться для отделения округа от страны. re.split может использоваться для поиска имени состояния, разделенного пробелом. Я использую пробел с разделителями, потому что «Нью-Йорк Сити» в противном случае будет разделен некорректно, но поскольку он начинает строку, он не разделяется пробелом. Это может завершиться ошибкой, если в названии округа есть имя штата, в котором нет начала строки.

import csv
import re

splitter = r' (Alabama|Alaska|Arizona|Arkansas|California|Colorado|Connecticut|Delaware|Florida|Georgia|Hawaii|Idaho|Illinois|Indiana|Iowa|Kansas|Kentucky|Louisiana|Maine|Maryland|Massachusetts|Michigan|Minnesota|Mississippi|Missouri|Montana|Nebraska|Nevada|New Hampshire|New Jersey|New Mexico|New York|North Carolina|North Dakota|Ohio|Oklahoma|Oregon|Pennsylvania|Rhode Island|South Carolina|South Dakota|Tennessee|Texas|Utah|Vermont|Virginia|Washington|West Virginia|Wisconsin|Wyoming) '

with open('data.csv',newline='') as fin:
    with open('processed.csv','w',newline='') as fout:
        r = csv.reader(fin)
        w = csv.writer(fout)
        next(r) # skip header
        w.writerow(['County','State','Country','Total'])
        for row in r:
            row[:1] = re.split(splitter,row[0])
            w.writerow(row)

processing.csv с учетом ввода OP:

County,State,Country,Total
New York City,New York,US,"15,597 confirmed"
Westchester,New York,US,"3,891 confirmed"
Nassau,New York,US,"2,869 confirmed"
Suffolk,New York,US,"1,880 confirmed"
King,Washington,US,"1,277 confirmed"
Cook,Illinois,US,"1,194 confirmed"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...