为了账号安全,请及时绑定邮箱和手机立即绑定

在Python中将csv文件解析为布尔表达式

在Python中将csv文件解析为布尔表达式

料青山看我应如是 2023-08-08 15:17:24
我有一个 csv 文件,例如:cutsetsx1x3,x5x2x4,x6x5,x7x6,x8x7,x9x6,x8,x10我运行以下 Py 脚本:import csv# Reads Boolean expression from cutsets fileexpr = []with open("MCS_overlap.csv", "r") as csv_file:    csv_reader = csv.reader(csv_file)    # skip the first row    next(csv_reader)    for lines in csv_reader:        expr = expr + lines + ['|']    del expr[-1]    final_expr=str(''.join(expr)).replace(",","&")print("The Boolean expression is")print(final_expr)并得到输出:The Boolean expression isx1|x3x5|x2|x4x6|x5x7|x6x8|x7x9|x6x8x10我希望final_expr=str(''.join(expr)).replace(",","&")在“|”括起来的任何两个变量之间得到一个“&”,例如“x4&x6”、“x6&x8&x10”。但可以看出,变量只是简单地连接起来。鉴于我无法更改输入文件的格式,如何完成插入“&”?
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

干得好:


expr =[]

f = open('MCS_overlap.csv')

expr.append(f.read())

final_expr = expr[0].replace('\n', '|').replace(',', '&')

print(final_expr)

印刷:


'x1|x3&x5|x2|x4&x6|x5&x7|x6&x8|x7&x9|x6&x8&x10'


查看完整回答
反对 回复 2023-08-08
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

因为您使用的是csvmodule,lines是一个列表,因此expr是一个元素全部为 x-es 和一些 pipeline 的列表|。您可以打印出来亲自查看。当您''.join(expr)这样做时,只是连接所有元素,没有逗号(即没有要替换的内容)。


这应该做


import csv

# Reads Boolean expression from cutsets file


with open("MCS_overlap.csv", "r") as csv_file:

    csv_reader = csv.reader(csv_file)

    # skip the first row

    next(csv_reader)

    lines = ('&'.join(line) for line in csv_reader)

    final_expr = '|'.join(lines)

print(final_expr)

当然,你可以不使用csv模块


with open("MCS_overlap.csv", "r") as csv_file:

    next(csv_file)

    lines = (line.strip().replace(',', "&") for line in csv_file)

    final_expr = '|'.join(lines)

print(final_expr)

请注意,这两个片段均未经过测试,但我希望为您完成该任务。


查看完整回答
反对 回复 2023-08-08
  • 2 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信