如何正确删除制表符并在Python中拆分?

时间:2018-07-26 19:41:16

标签: python regex formatting

我正在使用以下代码尝试使用Fpgrowth算法,但是当我想删除它们时,我将''作为篮子中的项目。正确的方法是什么?

from pyspark.mllib.fpm import FPGrowth
from pyspark import SparkConf
from pyspark.context import SparkContext
sc = SparkContext.getOrCreate(SparkConf().setMaster("local[*]"))
data = sc.textFile("C:\\Users\\marka\\Downloads\\Assig2.txt")
data.map(lambda line: line.strip().split())
transactions = data.map(lambda line: line.strip().split('\t'))
#notempty = transactions.map(lambda x: x is not '')
unique = transactions.map(lambda x: list(set(x))).cache()
model = FPGrowth.train(unique, minSupport=0.7, numPartitions=10)
result = model.freqItemsets().collect()
for fi in result:
    print(fi)

输出:

FreqItemset(items=[''], freq=100)
FreqItemset(items=['Soap'], freq=99)
FreqItemset(items=['Soap', ''], freq=99)
FreqItemset(items=['Water'], freq=99)
FreqItemset(items=['Water', 'Soap'], freq=99)
FreqItemset(items=['Water', 'Soap', ''], freq=99)
FreqItemset(items=['Water', ''], freq=99)
FreqItemset(items=['Beer'], freq=88)
FreqItemset(items=['Beer', 'Water'], freq=88)
FreqItemset(items=['Beer', 'Water', 'Soap'], freq=88)
FreqItemset(items=['Beer', 'Water', 'Soap', ''], freq=88)
FreqItemset(items=['Beer', 'Water', ''], freq=88)
FreqItemset(items=['Beer', 'Soap'], freq=88)
FreqItemset(items=['Beer', 'Soap', ''], freq=88)
FreqItemset(items=['Beer', ''], freq=88)
FreqItemset(items=['Rock_Salt'], freq=80)
FreqItemset(items=['Rock_Salt', 'Water'], freq=79)
FreqItemset(items=['Rock_Salt', 'Water', 'Soap'], freq=79)
FreqItemset(items=['Rock_Salt', 'Water', 'Soap', ''], freq=79)
FreqItemset(items=['Rock_Salt', 'Water', ''], freq=79)
FreqItemset(items=['Rock_Salt', 'Soap'], freq=79)
FreqItemset(items=['Rock_Salt', 'Soap', ''], freq=79)

enter image description here

1 个答案:

答案 0 :(得分:0)

>>> s = 'Rock_Salt\tFlashlight\t\tWater\t\t'
>>> s.split('\t')
['Rock_Salt', 'Flashlight', '', 'Water', '', '']
>>> import re
>>> re.split(r'[\t]+', s)
['Rock_Salt', 'Flashlight', 'Water', '']

# potential solutions?
>>> [a for a in s.split('\t') if a]
['Rock_Salt', 'Flashlight', 'Water']
>>> list(filter(None, s.split('\t')))
['Rock_Salt', 'Flashlight', 'Water']
>>> s.split()
['Rock_Salt', 'Flashlight', 'Water']