使用“ |”将带有推文的文本文件解析为csv分隔符

时间:2019-08-12 02:13:00

标签: python pandas csv parsing text

我有一个.txt文件,其中包含经过地理标记的推文。信息以“ |”定界字符。信息(可以看作是列)是日期时间,纬度,经度和tweet_text。

Date_time|latitude|longitude|tweet_text
Mon Jan 01 09:09:57 +0000 2018|-37.8140362|144.9644232|terima kasih 2017 yang ohsem. semoga 2018 akan lebih baik lagi.-selamat tahun baru rakan-rakan… 
Mon Jan 01 09:15:54 +0000 2018|-37.81639|144.9655|we love christmas and new year proposals! happy new year to everyone celebrating love this year… 
Mon Jan 01 09:42:08 +0000 2018|-37.818|144.985|@michaelpaynter entertaining everyone at yarra park nye event #melbourne| #nye #music… 
Mon Jan 01 09:45:16 +0000 2018|-37.818|144.985|@emilyurbandiva and brother @jwilliamsimusik entertaining everyone at yarra park nye eventâ€|¦

最初,我使用

data = pd.read_csv('MelbCBD_scs2018_new.txt',sep="|", header=None)

,但是只要tweet_text具有'|',它就会引发解析错误。

我尝试手动清理tweet_text,但是对于大文件来说,这太麻烦了。因此,我更改了read_csv的参数参数。

data = pd.read_csv('MelbCBD_scs2018_new.txt',sep="|", header=None, quoting=csv.QUOTE_NONE,error_bad_lines=False)

但是它显示以下警告,并跳过了我不希望的那些行(基本上是推文)。

b'Skipping line 340: expected 4 fields, saw 5

理想情况下,我希望找到一个在遇到3个'|'后删除任何特殊字符的代码.txt文件每一行中的字符,即tweet_text列,并将其解析为.csv文件,而无需跳过任何行。

1 个答案:

答案 0 :(得分:1)

因此,只需通过指定列名来指定列数即可。

   defaultNavigationOptions: ({ navigation }) => ({
      headerLeft: () => {
        const { routeName } = navigation.state;
        let iconName;
        if (routeName === "HomeChild1") {
          iconName = "ios-arrow-back";
        } else if (routeName === "HomeChild2") {
          iconName = "ios-arrow-back";
        } 
        ....
        return (
          <Icon
            name={iconName}
            size={30}
            style={{ marginStart: 25 }}
            color="#FFF"
            backgroundColor="#FFF"
            onPress={() => navigation.goBack()}
          />
        );
     ...

现在,这将返回每行而不跳过,并将其存储在名为“ data”的数据框中。