python - 在 Python 中将 csv 文件解析为布尔表达式
问题描述
我有一个 csv 文件,例如:
cutsets
x1
x3,x5
x2
x4,x6
x5,x7
x6,x8
x7,x9
x6,x8,x10
我运行以下 Py 脚本:
import csv
# Reads Boolean expression from cutsets file
expr = []
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 is
x1|x3x5|x2|x4x6|x5x7|x6x8|x7x9|x6x8x10
我希望在用final_expr=str(''.join(expr)).replace(",","&")
“|”括起来的任何两个变量之间得到一个“&”,例如“x4&x6”、“x6&x8&x10”。但可以看出,变量只是简单地连接起来。鉴于我无法更改输入文件的格式,如何完成插入“&”?
谢谢桂
解决方案
因为您使用的是csv
模块,lines
所以是一个列表,因此expr
是一个列表,其中的元素都是 x-es 和一些管道|
。您可以打印自己查看。当你这样做时''.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)
请注意,这两个片段都没有经过测试,但我希望为您完成任务。
推荐阅读
- php - 不是显示 div,而是发送表单
- c++ - clEnqueueReadBuffer 不会将所有值分配给指向 std::vector 数据的 cl_mem 缓冲区
- mysql - 当我使用 MainWindow.hide() 函数时,它给我一个错误,指出 MainWindow 未定义但相同的 MainWindow 在 setupUI 和 retranslateUI 中工作
- python - 写了Python代码,现在怎么发给朋友?
- javascript - 保持每 2.5 秒调用一次 API,并在达到所需结果后关闭调用
- python - Python如何设置安装目录?
- azure - 在 Azure 中捕获 SEE(服务器发送的事件)
- graphql - 不变违规:期望解析的 GraphQL 文档
- mongodb - 在 mongodb 中检索与 id 匹配的数组数据
- react-native - 使用 expo cli 时我的手势处理程序不工作