选择仅包含字母字符的行

时间:2015-10-05 23:28:16

标签: python regex alphabet datumbox

我的数据采用以下格式:

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

我想检查主题标签是否包含任何非字母表。如果是,则删除相应的行。

所需的输出是:

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 个答案:

答案 0 :(得分:10)

使用带有条件的列表推导:

newdata = [x for x in data if x[1][1:].isalpha()]
print newdata

提供输出

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

答案 1 :(得分:3)

简单回答:

for item in data:
    if re.match("^#[A-Za-z]+$", item[1]):
        newdata.append(item)
相关问题