在Python中筛选出名字通常可以通过以下几种方法实现:
使用正则表达式
使用命名实体识别(NER)
利用像spaCy这样的自然语言处理库,它提供了NER功能,可以识别文本中的人名。
下面是使用spaCy库提取文本中人名的示例代码:
```python
import spacy
加载spaCy的中文模型
nlp = spacy.load("zh_core_web_sm")
输入文本
text = "欢迎大家参加本次活动。"
使用spaCy处理文本
doc = nlp(text)
提取人名
people_names = [ent.text for ent in doc.ents if ent.label_ == "PERSON"]
打印提取到的人名
for name in people_names:
print(name)
如果你需要从文件中筛选名字,可以使用以下代码:```pythonimport pandas as pd
读取Excel文件
name_data = pd.read_excel('names.xls', encoding='utf-8')
遍历名字列,如果是文件则打印并复制到新路径
for name in name_data['name']:
if os.path.isfile(name):
print(name)
shutil.copy(name, os.path.join('/root/newpath', name))
如果你需要从句子中提取名字,可以使用以下代码:
```python
from LAC import LAC
from ltp import LTP
初始化LAC和LTP
lac = LAC(mode="lac")
ltp = LTP()
定义提取名字的函数
def extract_name(sentence: str, type="lac"):
user_name_lis = []
if type == "lac":
_result = lac.run(sentence)
for _index, _label in enumerate(_result):
if _label == "PER":
user_name_lis.append(_result[_index])
elif type == "ltp":
_seg, _hidden = ltp.cut(sentence)
for word in _seg:
if word.flag.startswith("nr"):
user_name_lis.append(word.word)
return user_name_lis
请注意,这些代码示例可能需要根据你的具体需求进行调整。

