仅选择包含字母字符的行

3

我的数据格式如下:

data = [['@datumbox', '#machinelearning'],
 ['@datumbox', '#textanalysis'],
 ['@things_internet', '#iot'],
 ['@things_internet', '#h...'],
 ['@custmrcom', '#analytics123'],
 ['@custmrcom', '#strategy...123'],
 ['@custmrcom', '#1knowledgetweet'],
 ['@tamaradull', '#@bigbrother']]

我希望检查是否有非字母的hashtag。如果存在,则删除相应的行。
期望的输出为:
data = [['@datumbox', '#machinelearning'],
 ['@datumbox', '#textanalysis'],
 ['@things_internet', '#iot']]

我认为我需要使用 re.sub (例如,re.compile(' [^ a-zA-Z] '))。 到目前为止,这是我的代码:

newdata = []

for item in data:
    regex = re.compile('[^a-zA-Z]')
    if regex.match(item[1]):
        newdata.append([item[0], item[1]])

有任何建议吗?

2
你可以展示一下你目前已经做了什么吗? - idjaw
请记得排除 #,因为它是一个非字母字符。 - Nayuki
#是“井号”的意思,所以我希望保留它。 - kevin
2个回答

10
使用带有条件的列表推导式:
newdata = [x for x in data if x[1][1:].isalpha()]
print newdata

提供输出

[['@datumbox', '#machinelearning'], ['@datumbox', '#textanalysis'], ['@things_internet', '#iot']]

3
简单的回答:
for item in data:
    if re.match("^#[A-Za-z]+$", item[1]):
        newdata.append(item)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接