python - 基于Python中的公共(public)列合并两个文本文件

标签 python mysql sql csv

我正在尝试根据公共(public)列合并来自两个文本文件的选定列。我这样做是为了将它导入 MySQL。显然,在 SQL 中,这将是一个获取信息的简单查询,但我实际上想要一个具有指定连接的单独的永久表,因此我需要为导入创建这个文本文件。

这是我目前使用的代码:

import csv

with open('locations.txt', 'rb') as l,\
     open('checkins.txt','rb') as c,\
     open('location.txt','w') as location:
     writer = csv.writer(location, delimiter='\t')

    for line in c:
       words = line.split()
    for lines in l:
       word = lines.split()
    writer.writerow([word[:], words[3], words[4], words[6:16]])

这是示例输出:

['220811', 'Flemington', '2010-10-23'] 59.31297463 '\t' 18.02006155 '\t' ['59.2968', '18.0313', '1.91024672383817', '12420', 'Bandhagen', 'SE']

(顺便说一句,我的输出中不断出现撇号和括号。有没有办法摆脱这些?直到我导入 csv 并使用带括号的 writerow 方法时我才遇到问题,所以我猜想这就是问题所在。)

我想要的输出是在 locations.txt 的第 1 列和 checkins.txt 的第 5 列上连接的数据。我是否应该找到一种方法根据我要加入的列对两个文本文件中的信息进行排序?

此外,locations.txt 中的第 1 列与第 5 列不应有任何不同的信息,但 checkins.txt 文件的第 5 列中会有重复的信息。有没有正确的方法来处理这个问题? (我想保留与 locations.txt 中第 1 列值关联的重复项)

最佳答案

在打印之前尝试加入数组:

writer.writerow("\t".join(word[:] + words[3] + words[4] + words[6:16]))

此外,您正在覆盖 l 中的变量词。所以,你得不到你想要的。对于第二个文件的输出,您可能需要类似 words2 = lines.split() 的东西。

关于python - 基于Python中的公共(public)列合并两个文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23832252/

相关文章:

python - 未等待的任务总是在通过 create_task 创建时开始吗?

javascript - 如何在 Odoo 14 中搜索 res.partner 记录

php - MySQL varchar 的错误顺序

java - 捕获有意义的 sql 异常的正确方法

python - 我的 discord 机器人从 youtube url 播放音频时遇到问题

python - 子进程没有输出任何内容

linux - 如何解决字符编码问题

mysql - 使用存储过程中的循环增量创建表

mysql - SQL 插入其他更新不起作用

php - 仅在 MySQL 列中自动标记日期