我正在尝试构建一个小型爬虫来抓取 Twitter 句柄。我终生无法避免犯下的错误。对于 re.search,这似乎是完全相同的错误。re.findall 和 re.finditer。错误是TypeError: expected string or buffer.
数据的结构如下来自 CSV:
30,"texg",@handle,,,,,,,,,
请注意,打印行工作正常,测试 = re.... 在到达打印行之前出错。
def read_urls(filename):
f = open(filename, 'rb')
reader = csv.reader(f)
data = open('Data.txt', 'w')
dict1 = {}
for row in reader:
print row
test = re.search(r'@(\w+)', row)
print test.group(1)
我也不是一直在许多不同的线程上解决这个问题,但解释的所有解决方案都没有奏效。似乎重新无法读取行调用...
仔细看看你的代码:
for row in reader:
print row
test = re.search(r'@(\w+)', row)
print test.group(1)
请注意, row 是一个列表而不是字符串,并且根据搜索文档:
扫描字符串以查找正则表达式模式产生匹配的第一个位置,并返回相应的 MatchObject 实例。如果字符串中没有位置与模式匹配,则返回 None;请注意,这与在字符串中的某个点找到零长度匹配不同。
这意味着您应该创建一个字符串并检查是否test
不是None
for row in reader:
print row
test = re.search(r'@(\w+)', ''.join(row))
if test:
print test.group(1)
也可以打开没有b
标志的文件,例如
f = open(filename, 'r')
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句