每个月,我都会下载一些与工作相关的分析工具,这些都是我负责的工作。
我在powershell中做了一些数据按摩(将-s更改为数字列的空值),这样我的Excel查询就可以轻松地处理数据了。
我决定将Tweet文本列中的hashtags复制到他们自己的专栏中,以了解它们的表现。
我的整个剧本
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 text’是列名。
Tweet的范围从0到6个标签不等。我看到的一个问题是,每个regex匹配选项似乎都返回一个对象中的项,在这个对象中,我希望简单地将它们作为空格分隔的列表添加到最后一个字段中。
我可能会提出一些问题:为什么不在Excel中这样做呢?问得好。我最初想将它添加到power查询导入中,但实际上似乎不可能。虽然我可以在VBA中这样做,但我希望这是一个可打包的解决方案。
为什么不用Python来做呢?我确实有一个解决方案大部分已经完成,但我真的很想把它作为一个简单的过程。
标题是什么?"Tweet id“、"Tweet permalink”、"Tweet text“、"time”、“印象”、“订婚”、“参与率”、"retweets“、”回复“、”喜欢“、”用户简介单击“、"url单击”、"hashtag点击“、”详细扩展“、"permalink单击”、"app打开“、"app安装”、“跟进”、“电子邮件推特”、“拨号电话”、“媒体视图”、“媒体参与”、“推广印象”,“推广参与”、“提升参与率”、“推广转发”、“推广回复”、“推广用户个人资料点击”、“促进url点击”、“促进hashtag点击”、“促进细节扩展”、“促进permalink点击”、“推广应用程序打开”、“推广应用安装”、“推广电子邮件推特”、“推广拨号电话”、“推广媒体视图”、“促进媒体参与”。
来点推文样本怎么样?我是说他们是推特。以下是一些例子:
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.
发布于 2019-07-11 03:12:23
感谢李给了我几个主意。
感觉像是一根小胶带/救生圈,但是.
Remove-Item -path .\merged\merged.csv
$InputFiles = Get-Item "*.csv"
$OldString = '"-"'
$NewString = '""'
$InputFiles | ForEach-Object {
(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
$dataset = Import-Csv ".\merged\merged.csv"
$dataset | ForEach-Object {
$HashTagOut = ''
$HashTagList = $_.'Tweet Text'.Split(' ') -match '#'
foreach ($Hashtag in $HashTagList)
{
if ($Hashtag -match '#[a-zA-Z0-9]*')
{
$HashTagOut = $HashTagOut + $Matches[0] + ' '
}
}
$_ | Add-Member -MemberType NoteProperty -Name Hashtags -Value $HashTagOut.Trim() -Force
}
$dataset | Export-Csv ".\merged\merged.csv"
发布于 2019-07-10 04:12:17
这将完成任务..。笑一笑
# 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
如果您需要删除标点符号,这可以做一点摆弄。笑一笑
https://stackoverflow.com/questions/56961359
复制相似问题