提取标签并在Powershell中添加到新的csv字段

时间:2019-07-09 22:47:29

标签: regex powershell csv

每个月,我都会下载Twitter分析,以获取我负责的一些与工作相关的句柄。

我在powershell中进行了一些数据按摩(将数字列的-更改为null),以便我的Excel Power Query可以轻松使用数据。

我已经决定将主题标签从“推文”列中复制到其自己的列中,以进行有关其性能的调查。

我的整个脚本:

Remove-Item -path .\merged\merged.csv
$InputFiles = Get-Item "*.csv"
$OldString  = '"-"'
$NewString  = '""'
$InputFiles | ForEach {
    (Get-Content -Path $_.FullName).Replace($OldString,$NewString) | Set-Content -Path $_.FullName
}
Get-ChildItem -Filter *.csv | Select-Object -ExpandProperty FullName | Import-Csv | Export-Csv .\merged\merged.csv -NoTypeInformation -Append

由于我意识到我可能必须一次执行多个月,因此我决定每月简单地重做合并的文件。

我正在查看需要添加哪些标签以提取主题标签,而且我很确定自己在正确的方向上:

Import-Csv .\merged\merged.csv | Select-Object *,@{Name='hashtags';Expression={'XYZZY'}} | Export-Csv file.csv -NoTypeInformation

当然,麻烦是我不确定我需要在XYZZY中输入什么。我知道我的正则表达式是#[a-zA-Z0-9](在我以前的尝试中,我很难让#\ w捕获井号之外的任何东西。

“ Tweet文本”是列名。

推文范围从0到6个标签。我看到的一个问题是,每个正则表达式匹配选项似乎都在对象中返回项目,我希望将这些项目简单地添加为该最终字段中以空格分隔的列表。

我可能会看到的问题: 为什么不在Excel中这样做呢? 好问题。我最初想将其添加到电源查询导入中,但实际上似乎是不可能的。虽然我可以在VBA中做到这一点,但我希望这是可打包的解决方案。

为什么在Python中不这样做? 我确实有一个已完成的解决方案,但我真的很想将其保留为一个简单的过程。

标题是什么? “推文ID”,“推文永久链接”,“推文文本”,“时间”,“展示次数”,“参与度”,“参与率”,“转推”,“回复”,“喜欢”,“用户个人资料点击次数”, “网址点击”,“标签点击”,“详细信息扩展”,“固定链接点击”,“应用打开”,“应用安装”,“关注”,“电子邮件推文”,“拨号电话”,“媒体观看”,“媒体参与度”,“提升的展示次数”,“提升的参与度”,“提升的参与度”,“提升的转发”,“提升的回复”,“提升的喜欢”,“提升的用户个人资料点击次数”,“提升的网址点击次数”,“提升的点击次数” “主题标签点击”,“详细信息扩展”,“固定链接升级”,“应用程序打开”,“应用程序安装”,“跟随”,“电子邮件推文”,“拨号电话”,“媒体视图” ,“促进媒体互动”

一些样本推文怎么样? 好吧,我的意思是,它们是推文。这里有一些例子:

This is a tweet with zero hashtags.
@somename this is a reply with #one hashtag.
This is a tweet with two #hashtags, one that has #punctuation attached.

2 个答案:

答案 0 :(得分:0)

这将完成工作... [咧嘴]

# fake reading in some text from some source
$InStuff = @'
This is a tweet with zero hashtags.
@somename this is a reply with #one hashtag.
This is a tweet with two #hashtags, one that has #punctuation attached.
'@ -split [System.Environment]::NewLine

$HashTagList = foreach ($IS_Item in $InStuff)
    {
    @($IS_Item.Split(' ')) -match '#'
    }

$HashTagList

输出...

#one
#hashtags,
#punctuation

如果您需要删除标点符号,则可以稍作调整。 [咧嘴]

答案 1 :(得分:0)

感谢李给我一些想法。

感觉有点胶带/捆扎线,但是...

ActiveSheet