【问题标题】:separate .txt file to csv file单独的 .txt 文件到 csv 文件
【发布时间】:2019-10-23 08:24:55
【问题描述】:

试图将 txt 文件转换为 csv 但不起作用

原文:

 استقالة #رئيس_القضاء #السودان  OBJ
أهنئ الدكتور أحمد جمال الدين، مناسبة صدور أولى روايته   POS
يستقوى بامريكا مرةاخرى و يرسل عصام العريان الي واشنطن شئ NEG
#انتخبوا_العرص #انتخبوا_البرص #مرسى_رئيسى  #_ #__ö  NEUTRAL

预期结果:

text                                                             value
استقالة #رئيس_القضاء #السودان                                   OBJ
أهنئ الدكتور أحمد جمال الدين، مناسبة صدور أولى روايته         POS
يستقوى بامريكا مرةاخرى و يرسل عصام العريان الي واشنطن شئ      NEG
#انتخبوا_العرص #انتخبوا_البرص #مرسى_رئيسى  #_ #__ö             NEUTRAL

我已经尝试过了,但它不适用于空格和逗号约束

awk 'BEGIN{print "text,value"}{print $1","$2"}' ifile.txt

我也厌倦了python,但它并不包含所有这些

import pandas as pd
df = pd.read_fwf('log.txt')
df.to_csv('log.csv')

【问题讨论】:

  • 简单地说,"s 没有对齐。

标签: python-3.x pandas csv awk split


【解决方案1】:

您的请求不清楚,您想如何格式化最后一个字段。

我创建了一个脚本来对齐第 60 列的最后一行。

script.awk

BEGIN {printf("text%61s\n","value")}  # formatted printing heading line
{
    lastField = $NF;               # store current last field into var
    $NF = "";                      # remove last field from line
    alignLen =  60 - length() + length(lastField); # compute last field alignment
    alignFormat = "%s%"alignLen"s\n";   # create printf format for computed alignment
    printf(alignFormat, $0, lastField); # format print current line and last field
}

运行script.awk

awk -f script.awk ifile.txt

输出

text                                                        value
استقالة #رئيس_القضاء #السودان                               OBJ
أهنئ الدكتور أحمد جمال الدين، مناسبة صدور أولى روايته       POS
يستقوى بامريكا مرةاخرى و يرسل عصام العريان الي واشنطن شئ    NEG
#انتخبوا_العرص #انتخبوا_البرص #مرسى_رئيسى #_ #__ö           NEUTRAL

【讨论】:

  • 它不起作用,我的文件包含 10k 行并且它们都在一个列上
  • 它适用于您在问题中发布的示例数据。当它不起作用时,尝试发布更多示例数据。也许您需要在第 80 列进行更长时间的对齐?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-27
  • 1970-01-01
  • 2018-02-15
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多