我不熟悉正则表达式,python。例如,我的字符串列表是:
my_try = ['Aas','1Aasdf','cc)','ASD','.ASD','aaaa1','A']
现在,我想删除所有带有非英语字母的字符串。所以,我只想保持:
['Aas','ASD','A']
我不知道怎么用^或其他什么来做这个?有人能帮帮我吗?你知道吗
如果我的数据是:
my_try=pd.DataFrame({'try':
['Aas','1Aasdf','cc)','A2SD','.ASD',
'aaaa1','A','123%']})
然后我使用:
[x for x in my_try if re.match(r'^[a-zA-Z]+$', x['try'])]
为什么我会有这样的错误:
Traceback (most recent call last):
File "C:\feng\myCode\infoExtract\venv\lib\site-packages\IPython \core\interactiveshell.py", line 3319, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-58-4bd95f31bd0c>", line 1, in <module>
[x for x in my_try if re.match(r'^[a-zA-Z]+$', x['try'])]
File "<ipython-input-58-4bd95f31bd0c>", line 1, in <listcomp>
[x for x in my_try if re.match(r'^[a-zA-Z]+$', x['try'])]
TypeError: string indices must be integers
有谁能告诉我怎么解决这个问题,为什么会这样?你知道吗
如果您有一个列表,并且希望将其筛选为只包含符合某些条件的元素,则使用
if
的列表理解非常适合:您想筛选任何只包含字母“a”到“z”和“a”到“z”的内容,这是正则表达式易于使用的地方:
正则表达式以
^
开头,以$
结尾,告诉re.match()
它应该从头到尾匹配整个字符串。[a-zA-Z]
定义一个字符类,其中包含您要查找的字母。通常你会使用\w
,但这也包括数字。最后,+
表示字符串中需要有1个或多个字符(如果使用*
,则需要有0个或多个字符)相关问题 更多 >
编程相关推荐