【发布时间】:2017-01-10 16:12:30
【问题描述】:
我正在尝试从 CSV 文档中提取所有电话号码,并将它们附加到字符串格式的列表中。这是我的输入示例:
someone@somewhere.com,John,Doe,,,(555) 555-5555
这是我正在使用的代码:
l = []
with open('sample.csv', 'r') as f:
reader = csv.reader(f)
for x in reader:
number = re.search(r'.*?@.*?,.*?,.*?,.*?,.*?,(.*?),',x)
if number in x:
l.append(''.join(number))
基本上,我正在尝试检查行中的某个位置(括号所在的位置)是否有一个数字,然后使用连接将其作为字符串附加到列表中。但是,我不断收到此错误:
Traceback (most recent call last):
File "C:/Users/svillamil/Desktop/Final Phone.py", line 14, in <module>
number = re.search(b'.*?@.*?,.*?,.*?,.*?,.*?,(.*?),', x)
File "C:\Users\svillamil\AppData\Local\Programs\Python\Python36-32\lib\re.py", line 182, in search
return _compile(pattern, flags).search(string)
TypeError: expected string or bytes-like object
我该如何解决这个问题?
【问题讨论】:
-
强制使用正则表达式?
-
您使用了错误的工具来完成这项工作。此外,
x不是字符串。查看csv库的文档。 -
为什么不直接用逗号分割文件行并遍历元素检查每个是否匹配(???)?
标签: python regex python-3.x csv