[英]Splitting and appending a string in python
我有這些看起來像這樣的字符串:
'Census Tract 201, Autauga County, Alabama: Summary level: 140, state:01> county:001> tract:020100'
我想取 state 編號 01、縣編號 001 和區域 020100 並創建一個新字符串 01001020100。如何在 Python 中實現這一點?
所有這些字符串都在 pandas dataframe 中,所以我需要將此方法應用於所有行。 正如我上面所說的,有所有類型的字符串。
在這里提供更多上下文是我的所有代碼:
import pandas as pd
import numpy as np
import re
df = pd.read_csv('all_data.csv')
df = pd.read_csv('all_data.csv')
column_of_interest = df['Location+Type']
column_of_interest.head()
print(type(column_of_interest[0][0]))
<class 'str'>
find_census = lambda text: text.split('state:')[1].split('>')[0] + text.split('county:')[1].split('>')[0] + text.split('tract:')[1].split('>')[0]
column_of_interest['GEOID'] = column_of_interest.apply(lambda x: find_census(x['Location+Type']))
我收到 lambda 的此錯誤:
1 find_census = lambda text: text.split('state:')[1].split('>')[0] + text.split('county:')[1].split('>')[0] + text.split('tract:')[1].split('>')[0]
----> 2 column_of_interest['GEOID'] = column_of_interest.apply(lambda x: find_census(x['Location+Type']))
TypeError: string indices must be integers
為了實現您的目標,您可以使用正則表達式語法。 但是,看來您是初學者,所以我來這里是基於split
方法的基本邏輯。 這是代碼:
census = 'Census Tract 201, Autauga County, Alabama: Summary level: 140, state:01> county:001> tract:020100'
state = census.split('state:')[1].split('>')[0]
county = census.split('county:')[1].split('>')[0]
tract = census.split('tract:')[1].split('>')[0]
result = state + county + tract
print(result) # 01001020100
更新:使用lambda 表達式生成所需的輸出
find_census = lambda text: text.split('state:')[1].split('>')[0] + text.split('county:')[1].split('>')[0] + text.split('tract:')[1].split('>')[0]
# to use the above lambda expression
print(find_census(census)) # 01001020100
假設您的文本遵循您提供的模式,您可以使用正則表達式來獲取結果。
這里\d
對應提取一個數字\s
是一個空格
s = 'Census Tract 201, Autauga County, Alabama: Summary level: 140, state:01> county:001> tract:020100'
import re
m=re.search("state:(\d+)>\scounty:(\d+)>\stract:(\d+)",s)
''.join(m.groups())
Output
'01001020100'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.