python-3.x - 如何完成这个 Python 脚本来操作制表符分隔文件中的数据?
问题描述
我在一个制表符分隔的文件中有一个零件号和序列号的列表,我需要使用连字符将它们合并在一起以创建一个Asset Number。
这是输入:
Part Number Serial Number
PART1 SERIAL1
,PART2 SERIAL2
, PART3 SERIAL3
这就是我想要的输出:
Part Number Serial Number Asset Number
PART1 SERIAL1 PART1-SERIAL1
,PART2 SERIAL2 PART2-SERIAL2
, PART3 SERIAL3 PART3-SERIAL3
我尝试了以下代码:
import csv
input_list = []
with open('Assets.txt', mode='r') as input:
for row in input:
field = row.strip().split('\t') #Remove new lines and split at tabs
for x, i in enumerate(field):
if i[0] == (','): #If the start of a field starts with a comma
field[x][0] = ('') #Replace that first character with nothing
field[x].lstrip() #Strip any whitespace
print(field)
这段代码产生了实际的输出:
['Part Number', 'Serial Number']
['PART1', 'SERIAL1']
['",PART2"', 'SERIAL2']
['", PART3"', 'SERIAL3']
我的第一个问题是我从所有字段开头删除逗号和空格的代码无法正常工作。
第二个问题是空格中添加了引号。
第三个问题是我不知道如何将另一个项目添加到列表数组(资产编号)中,因此我可以加入这些字段。
有人能帮我解决这些问题吗?
解决方案
import pandas as pd
data = {'Part Number': ['PART1',', PART2',', PART3'],
'Serial Number': ['Serial1','Serial2','Serial3']}
df = pd.DataFrame(data)
df.loc[:,'AssetNumber'] = df.loc[:,'Part Number'].apply(lambda x: str(x).strip().replace(',','')) + '-' + df.loc[:,'Serial Number'].apply(lambda x: str(x).strip().replace(',',''))
这会做你想做的
在您处理 CSV 调用时
df = pd.read_csv('filepathasstring',sep='\t')
如果您有问题,请检查此问题是否与行有关:
使用 Pandas 读取制表符分隔的文件 - 适用于 Windows,但不适用于 Mac
然后你可以通过调用保存为制表符分隔:
df.to_csv('filepathasstring', sep='\t')
如果你还没有熊猫,这里是如何获得它的:
推荐阅读
- hadoop - 使用 sqoop 将数据从 Oracle 导入 HDFS 时如何保留数据类型?
- hadoop - Hadoop HiPi - hibImport NoClassDefFoundError
- azure - 对于 Azure 中的内部服务器到服务器通信,除了自签名证书之外,最好使用哪些证书?
- reactjs - 在 React 中更新呈现形式的函数
- android - 如何从我的 Android 应用程序中打开默认邮件应用程序收件箱?
- spring-boot - 如何从我们的 Spring Boot 微服务向外部服务器请求给定 ID 的数据?
- react-native - 在 react-native 的函数中执行代码后如何导航到另一个页面
- c# - 如何在 sql 存储过程和 c# 之间将 Nvarchar 数据类型转换为 int?
- php - SQL / PHP - 只显示我的数据库的第一个值
- php - 错误“抱歉,找不到您要查找的页面。” 拉拉维尔 5.5