我是一个不错的SAS程序员,但我在Python中是新的。现在,我给了我的Twitter提要,每个提要都保存到非常大的平面文件中,并带有第1行的标头,并且数据结构如下:
created_at |||| id ||||文本|||| in_reply_to_to_user_id ||||名称|||| screet_name |||| ||| colducters_closters_count_count_count |||||| time_zone ||| quote_count ||回复_COUNT |||| retweet_count ||||| iffe_count星期二11月14日12:33:00 0000 2017 |||| 930413253766791168 |||| icymi:足球俱乐部加入精酿啤酒革命!良好的阅读|||||||| Bab |||| Babbrewers ||||每月在1000贸易,珠宝区的自制聚会。本月的第一个星期二。即使您从未酿造过。|||| 95 |||||||| 0 ||| 0 |||| 0 ||| 0Nov Nov 14 12:34:00 0000 2017 |||| 930413253766821456 ||||我愿意||||||||| misty |||||| mistygrl ||||您可以做!|||| 45 |||||||| 0 ||| 0 |||| 0 ||| 0
我想这就是这样,因为在Twitter feed中可以找到任何类型的字符,但是四型管不够。
我知道有些人为此使用了JSON,但是我已经有了这些文件:其中很多。我可以使用SAS轻松地转换这些文件,但是我更喜欢这次。
。现在,我似乎找不到使Python(2.7)的方法理解,四个管道是实际的分离器。以下代码的输出:
import pandas as pd
with open('C:/Users/myname.mysurname/Desktop/my_twitter_flow_1.txt') as theInFile:
inTbl = pd.read_table(theInFile, engine='python', sep='||||', header=1)
print inTbl.head()
似乎暗示python并没有将不同的字段视为不同的字段,但简单地将前5行带入了线馈线,而忽略了||||分隔器。
基本上,我得到的输出像我在上面写的那样向您展示数据结构。
有任何提示?
仅使用问题中的数据:
>>> df = pd.read_csv('rio.txt', sep='|{4}', skip_blank_lines=True, engine='python')
>>> df
CREATED_AT ID
0 Tue Nov 14 12:33:00 +0000 2017 930413253766791168
1 Tue Nov 14 12:34:00 +0000 2017 930413253766821456
TEXT IN_REPLY_TO_USER_ID
0 ICYMI: Football clubs join the craft beer revo...
1 I'm up for it
NAME SCREEN_NAME DESCRIPTION
0 BAB BABBrewers Monthly homebrew meet-up at 1000 Trades, Jewel...
1 Misty MistyGrl You CAN DO it!
FOLLOWERS_COUNT TIME_ZONE QUOTE_COUNT REPLY_COUNT RETWEET_COUNT
0 95 0 0 0
1 45 0 0 0
FAVORITE_COUNT
0 0
1 0
注意sep
参数。当它长一个以上的字符,而不等于" s "时,它被解释为正则表达式。但是" |"角色在正则表达式中具有特殊的含义,因此必须使用" "字符逃脱它。我可以简单地写sep='||||'
;但是,我使用了缩写。