簡體   English   中英

在 python 中拆分和附加字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM