我在一个位置上有多个csv文件。我想从每个csv中提取两个字段,并将它们全部附加到一个CSV文件中。 以下是我在每个CSV文件中的信息:
呵呵/// n ojwiehu你好:18:ddjhhfudhfuhughfugh:12N: 赢得23459 Hondrus juerheuhrhk kji9 @! kfddhfhih9
每个csv中都有此类信息,我需要提取两个字段:
1。)在:18:和:12N之间的文本: 2.)WIN和Hondrus之间的文本
输出将包含来自每个csv的2列,并附加到一个数据帧中
有人可以帮我编写脚本吗? 目前,我正在运行下面的代码以从csv之一中提取信息。但是,我需要一个脚本,该脚本将从所有CSV中提取信息并将其附加到其中。
with open("data.csv", "r", encoding='UTF-8') as fobj:
text = fobj.read()
import re
a = re.compile(':18:(.*) :12N:')
b=re.compile('WIN(.*)HONDRUS')
z = a.findall(text)
k=b.findall(text)
print (z)
print (k)
答案 0 :(得分:0)
Nitesh,您可以使用glob捕获数组中可以循环播放的所有文件:
import glob
glob.glob('*.csv')
# ['1.csv',
# '2.csv',
# '3.csv',
# '4.csv']
这是脚本的修改版本,可以将它们全部放入列表中,然后可以将其作为csv逐行写出:
import glob
files = glob.glob('*.csv')
strings = []
for file in files:
with open(file, "r", encoding='UTF-8') as fobj:
text = fobj.read()
import re
a = re.compile(':18:(.*) :12N:')
b=re.compile('WIN(.*)Hondrus')
z = a.findall(text)
k=b.findall(text)
strings.append(z[0] + "," + k[0])
答案 1 :(得分:0)
您可以像建议的@oppressionslayer一样使用glob
,也可以使用sys
。做这样的事情:
import sys
import pandas as pd
path = 'path_to_your_files'
files = [name for name in os.listdir(path)]
df = pd.Dataframe()
df = pd.concat((pd.read_csv(os.path.join(path,f),
usecols=['18', '12N']) for f in files),
ignore_index=True).reset_index()
不确定我是否正确获得了列名。如果您可以提供一段数据,将会很有帮助。