我正在尝试使用Python + Pandas计算电子邮件地址中的点数。
第一条记录是“ addison.shepherd@gmail.com”。它应该数2点。而是返回26,即字符串的长度。
import pandas as pd
url = "http://profalibania.com.br/python/EmailsDoctors.xlsx"
docs = pd.read_excel(url)
docs["PosAt"] = docs["Email"].str.count('.')
有人可以帮助我吗?预先感谢!
答案 0 :(得分:3)
pandas.Series.str.count
将正则表达式作为输入。要匹配文字时间段(.
),必须将其转义:
docs["Email"].str.count('\.')
仅指定.
将使用句点的正则表达式含义(匹配任何单个字符)
答案 1 :(得分:3)
.str.count(..)
method [pandas-doc]与regular expression [wiki]一起使用。这在文档中指定:
此功能用于计算在
Series
的每个字符串元素中重复特定 regex模式的次数。
对于正则表达式,点表示“除换行符外的所有字符”。您可以使用字符集(用方括号将其包围):
docs["PosAt"] = docs["Email"].str.count('[.]')
答案 2 :(得分:2)
此处的一种变体是将原始电子邮件列的长度与删除了所有点的该列的长度进行比较:
docs["Email"].str.len() - docs["Email"].str.replace("[.]", "").len()