我想读取一个包含浮点数和数组的csv文件。我只想收集浮点值并摆脱数组的值。
我尝试了以下代码:
with open('resultsMC_100_var.csv', "r") as input:
with open('new.csv', "w") as output :
for line in input :
if not line.count(('[') or (']')) :
output.write(line)
但是问题是数组值写在多行上,因此代码无法按预期工作...
我向您展示了csv文件的第一行,因此您可以了解其构建方式:
51.3402815384;28.1789716134;76.7144759149;28.5590830355;50.719035557;4.83225361254;[ 23.35145494 23.6919634 21.1406396 77.35953884 121.68508966 23.02126533 24.64623985 22.30757623 59.53286234 86.01880338 22.34363071 29.75759786 30.94420056 27.24198645 21.62989704
22.57036406 23.09155954 26.32781992 22.82521813 99.12230864
22.04329951 22.50081984 104.84634521 59.48921929 34.47985424
我想做的是一个读取所有值的代码,然后在遇到符号[
时停止,然后在遇到]
时再次读取。我不知道该怎么做,并且在该网站上没有找到类似的主题,因此,我感谢任何能为我提供帮助的人。
答案 0 :(得分:1)
您的陈述的问题在于line.count(('[') or (']'))
与编写line.count('[')
相同,因为非空字符串的求值结果为True ...
一个简单的解决方案是使用正则表达式:
import re
with open('test.txt', "r") as f:
content = f.read()
with open('new.txt', "w") as output :
new_line = re.sub(r"\[[^\[\]]*\]", "", content, flags=re.MULTILINE)
output.write(new_line)
答案 1 :(得分:0)
您可以尝试使用正则表达式。我认为这是可行的。
import re
inp = open("results.csv", "r")
inp_data = inp.read()
out_data = re.sub(r"\[[^\[\]]*\]", "", inp_data)
out = open("xyz.csv", "w")
out.write(out_data)
这首先将您的输入数据读取为字符串。 然后,将所有数组替换为“”。然后,您可以将此更新的字符串写入新文件。希望这会有所帮助!