Python“;TypeError:应为字符串或缓冲区;使用re和csv
因此,我正在开发一个程序,从csv文件中获取Twitter用户名,并将其插入到一个下载所有推文的函数中。我几乎已经让它工作了,除了我认为csv的行输出有括号和撇号,Python“;TypeError:应为字符串或缓冲区;使用re和csv,python,csv,Python,Csv,因此,我正在开发一个程序,从csv文件中获取Twitter用户名,并将其插入到一个下载所有推文的函数中。我几乎已经让它工作了,除了我认为csv的行输出有括号和撇号,['POTUS']而不是POTUS,Twitter不会接受 以下是我正在使用的代码: with open('names.csv') as namescsv: namereader = csv.reader(namescsv) for row in namereader: row = re.sub(r'[
['POTUS']
而不是POTUS
,Twitter不会接受
以下是我正在使用的代码:
with open('names.csv') as namescsv:
namereader = csv.reader(namescsv)
for row in namereader:
row = re.sub(r'[^\w=]', '',row)
print row
我使用re尝试删除奇数字符,但在执行代码时出现以下错误:
File "/home/ian/Desktop/tweepy_scripts/tweetdownloader_allcsv_v2.py", line 66, in <module>
row = re.sub(r'[^\w=]', '',row)
File "/usr/lib/python2.7/re.py", line 151, in sub
return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or buffer
文件“/home/ian/Desktop/tweepy_scripts/tweetdownloader_allcsv_v2.py”,第66行,在
行=re.sub(r'[^\w=]','',行)
文件“/usr/lib/python2.7/re.py”,第151行,子文件
return\u compile(模式、标志).sub(repl、字符串、计数)
TypeError:应为字符串或缓冲区
一些帮助会很棒!我是一个初学者,我试图用以前的文章来解决这个问题,但收效甚微
我认为csv的行的输出有括号和撇号,['POTUS']
而不是POTUS
不,没有。csv模块的行输出是str
s的列表。当您显示列表时(例如,使用打印
),它将使用您描述的标点符号显示
您可能需要传递行中的单个单元格,而不是将行
传递给twitterapi。第一个单元格称为行[0]
,因此您可能需要:
result = whatever.the.twitter.api.is.called(row[0])
这是因为您的行变量是一个列表,而不是一个字符串——Python警告您它需要一个字符串。试着这样做:
import csv
import re
with open('names.csv') as namescsv:
namereader = csv.reader(namescsv)
for row in namereader:
for cell in row:
cell = re.sub(r'[^\w=]', '',cell)
print cell
我不是python专家,但是正则表达式前面的“r”看起来放错了位置r
很好。它的意思是“原始”或“regex”字符串,即它禁用\
解释。我猜中的行不会在字符串上迭代,而是在其他类型的对象上迭代。为了减少混淆,您得到了TypeError
,因为您将列表
传递给regex,而不是字符串。但真正的问题是你应该从这个列表中抽出一列。