将丑陋的字符串格式化为列表/字典

时间:2018-02-11 10:36:03

标签: python python-3.x string-formatting

感谢您查看以下内容。从“搁置”来看,我有一套丑陋的数据。

import shelve,os,re

os.chdir('''.\wikiUSstates''')

shelfFile = shelve.open('''.\IndiaTEMP''')
k=shelfFile['indiaprovinces']
print(type(k)) #This is type STR
print(k)

回归以下。这是印度的省份,其次是首都。

  

<class 'str'>
['Andhra Pradesh - Hyderabad(拟议资本:   Guntur区的Amaravati。请参阅下面的“,”。'','Arunachal Pradesh -   Itanagar','Assam - Dispur','比哈尔 - 巴特那','果阿 - 帕纳吉','古吉拉特邦    - Gandhinagar','Haryana - Chandigarh','Himachal Pradesh - Shimla',   '查谟&amp;克什米尔 - 斯利那加(冬季:查谟)','卡纳塔克邦 -   Bangalooru','喀拉拉邦 - Thiruvananthapuram','Madhya Pradesh - Bhopal',   'Maharashtra - Mumbai','Manipur - Imphal','Meghalaya - Shillong',   'Mizoram - Aizawl','Nagaland - Kohima','Orissa - Bhubaneswar',   '旁遮普 - 昌迪加','拉贾斯坦邦 - 斋浦尔','锡金 - 甘托克',   'Tamil Nadu - Chennai','Tripura - Agartala','Uttar Pradesh -   勒克瑙','西孟加拉邦 - 加尔各答','恰蒂斯加尔 - 赖布尔',   'Uttarakhand - Dehradun','Jharkhand - Ranchi','Telangana - 海德拉巴   (见','下方'','德里(德里国家首都辖区或NCT)    - 新德里*','安达曼&amp;尼科巴群岛 - 布莱尔港','昌迪加尔    - Chandigarh','Dadra&amp; Nagar Haveli - Silvasa','Daman&amp; Diu -   Daman','Lakshadweep - Kavaratti','Puducherry - Puducherry','\ n',   '\ n','\ n','\ n']

我正在尝试使这些数据可行(或者我可以通过索引号列表[[]]遍历省份列表,列表[1]是大写,或者甚至更好,字典(键是“省”,价值是“资本”)。

我尝试用REGEX以某种方式取出连字符并用昏迷代替它们,但没有成功。字符串末尾的丑陋换行也必须要处理(k.replace ??)。

干杯,谢谢你的手!

热心的初学者。

1 个答案:

答案 0 :(得分:0)

我会给你一个开始,你可以修改并让它按你想要的方式工作。

>>> def clean_string(string):
...     bracket = string.find('(')
...     if bracket > 1:
...         string = string[:bracket]
...     return string.strip()
... 
>>> for line in k:
...     print(list(map(clean_string, line.split('–'))))
... 
['Andhra Pradesh', 'Hyderabad']
['below.)']
['Arunachal Pradesh', 'Itanagar']
['Assam', 'Dispur']
['Bihar', 'Patna']
['Goa', 'Panaji']
['Gujarat', 'Gandhinagar']
['Haryana', 'Chandigarh']
['Himachal Pradesh', 'Shimla']
['Jammu & Kashmir', 'Srinagar']
['Karnataka', 'Bangalooru']
['Kerala', 'Thiruvananthapuram']
['Madhya Pradesh', 'Bhopal']
['Maharashtra', 'Mumbai']
['Manipur', 'Imphal']
['Meghalaya', 'Shillong']
['Mizoram', 'Aizawl']
['Nagaland', 'Kohima']
['Orissa', 'Bhubaneswar']
['Punjab', 'Chandigarh']
['Rajasthan', 'Jaipur']
['Sikkim', 'Gangtok']
['Tamil Nadu', 'Chennai']
['Tripura', 'Agartala']
['Uttar Pradesh', 'Lucknow']
['West Bengal', 'Kolkata']
['Chhattisgarh', 'Raipur']
['Uttarakhand', 'Dehradun']
['Jharkhand', 'Ranchi']
['Telangana', 'Hyderabad']
['below)']
['Delhi', 'New Delhi *']
['Andaman & Nicobar Islands', 'Port Blair']
['Chandigarh', 'Chandigarh']
['Dadra & Nagar Haveli', 'Silvasa']
['Daman & Diu', 'Daman']
['Lakshadweep', 'Kavaratti']
['Puducherry', 'Puducherry']
['']
['']
['']
['']

可能有助于查看字符串中是否存在'–',这样我们就不会获得['below.)']['']等垃圾值。