Python中字符串及列表的替代
1.replace()会把字符串之内符合的都替换掉,是不完全匹配,例如‘124,345,667,12456’,用124去重的话,会变成‘,345,667,56’
2.set函数可以用在‘1’,‘2‘,’3’中,不可以用在‘1,2,3,4’中,set()是对字符进行去重,不可用于字符串,故可以将字符串转化为列表,然后用set()去重
3.给列表进行完全匹配,替代为空(空格在方括号那里):
bbb = [ ' ' if i ==str(item['ch_name']) else i for i in b]
4.给列表去重,即判断它是否在在新列表中,不要在旧列表中移除
e = []
for item in new_lines:
if item not in e:
e.append(item)
5.替代所有符号
rstr = r"[.()(),。%、]"
con1 = re.sub(rstr, '', con)
a=con1.replace('|','、').replace(':','、').replace(':','、')
6.get()函数是根据键去查值,如果该键有对应的值则进行返回,若没有,即返回用户指定值 test=temp.get(zy[‘ch_name’],’-1’),比如指定的“-1”
7.根据指定的某个属性进行排序,需引用包import operator,
import operator
sort_z=sorted(z, key=operator.itemgetter('radom_id'))
8.对列表进行修改时,可以使用索引
test_atc.append(test)
dic['formulation'][-1]=dic['formulation'][-1]+t
9.将列表转化为字符串:
item['alias_name']='、'.join(bbb)
10.循环部分替代
a=jx.split(',')
#for temp in a:
for item in atc:
if temp in item['ch_name']:
item['ch_name']=item['ch_name'].replace(temp,'')
if temp in str(item['alias_name']):
item['alias_name']=str(item['alias_name']).replace(temp,'')
11.抽取字典中的某列数据,
c = { item['radom_id'] for item in atc }
然后去重,
for item in atc:
if item['radom_id'] in c:
e.append(item)
12.split()可存在多个参数,
mystr=re.split('[((:、|]', zy["formulation"])#分割
13.这样的替代可实现,但是有问题
rstr=str('123、56.1133、4352、0.3242')
a=re.sub('、\d+.','|',rstr)
结果:123|1133|0.3242
13.替换所有数字(replace()有返回值,必须让其等于什么,然后my_str=my_str.replace(str(i),’’)很重要,不可写成q=my_str.replace(str(i),'不然只返回最后替换8的字符串)
my_str='12ewe3fdg57hgg4ng4643vr8fb6'
for i in range(0,9):
my_str=my_str.replace(str(i),'')
print(my_str)
14.完全去重时,
for i in atc:
if a not in atc1:
e.append(a)
部分去重,
n=[]
for dic in atc:
if dic['ch_name'] not in n:
n.append(dic['ch_name'])
z.append(dic)
15.抽取两个列表中的重复数据
chongfu= [x for x in y if x in c]
list1 = ['张三', '李四', '王五', '老二']
list2 = ['张三', '李四', '老二', '王七']
a = [x for x in list1 if x in list2] #两个列表表都存在
b = [y for y in (list1 + list2) if y not in a] #两个列表中的不同元素
c = [x for x in list1 if x not in list2] #在list1列表中而不在list2列表中
d = [y for y in list2 if y not in list1] #在list2列表中而不在list1列表中
16.在panda中,read_csv读取txt文档时,read.csv默认分隔符是“,”比如前面都是一行没有“,”,后面突然出现一行有“,”,这时这行数据就会变成两列。
dt = pd.read_csv(abstract_file,error_bad_lines='False',sep='\t'),
sep=’\t’是指以\t为分隔符。如果前面是一列,后面忽然变成两列 ,这时程序就会报错:pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 121, saw 2,这时就是因为文档中除了特意留的‘\t’外,还有别的’\t’,使程序分割时出错了
17.匹配英文:p_e = re.compile(r’[a-zA-Z]’)
匹配中文:p_z = re.compile(r’[\u4e00-\u9fa5]’)