我有一个有3列的csv文件.我试图在第二列中搜索特定值(十六进制值)并读取该行中的下一个条目(第3列).格式类似于以下内容:
Text1, 0x04d0a053, value1
Text2, 0x04d01053, value2
Text3, 0x04d03053, value3
Text4, 0x04d05053, value4
Text5, 0x04d00053, value5
Text6, 0x04d02053, value6
Text7, 0x04d04053, value7
Text8, 0x04413053, value8
Run Code Online (Sandbox Code Playgroud)
我没有问题搜索和读取最后一个值(0x04413053)并打印'value8'.但是,当我尝试搜索前7个条目中的任何一个时,不会读回任何内容(输出中的[]).我的代码如下,任何人都知道bug可能是什么?
fileInput = 'mycsv.csv'
column0 = 0
column1 = 1
column2 = 2
#reads correctly
hexvalue = hex(0x04413053)
with open(fileInput, 'r') as file:
reader = csv.reader(file)
entry = [line[column2] for line in reader if line[column1] == hexvalue]
print entry
#does not read correctly
hexvalue = hex(0x04d0a053)
with open(fileInput, 'r') as file:
reader = csv.reader(file)
entry …Run Code Online (Sandbox Code Playgroud) 编辑:我使用的是Python 2.7
我有一个给定的'矩阵',如下所示,其中包含多个字符串列表.我想通过矩阵排序,只打印出只包含一组特定字符串的行.
任何人都可以给我一个如何解决这个问题的提示吗?
到目前为止我尝试了什么:
matrix = [("One", "Two", "Three"),
("Four", "Five", "Six"),
("Seven", "Eight", "One"),
("Four", "Five", "Six"),
("One", "Three", "Six")]
for index, data in enumerate(matrix):
if "One" and "Three" and "Six" in data:
print data
Run Code Online (Sandbox Code Playgroud)
期望的输出:
("One", "Three", "Six")
Run Code Online (Sandbox Code Playgroud)
实际产出(截至目前):
('Four', 'Five', 'Six')
('Four', 'Five', 'Six')
('One', 'Three', 'Six')
Run Code Online (Sandbox Code Playgroud) 我正在尝试检查 bash 脚本中字符串开头的格式是否正确。
预期的格式如下所示,其中字符串必须始终以“ABCDEFG-”(精确的字母和顺序)开头,数字会有所不同,但至少为 3 位数字。第三位数字之后的所有内容都是无关的。预期的字符串开头:“ABCDEFG-1234”
我正在使用下面的代码片段。
[ $(echo "$str" | grep -E "ABCDEFG-[0-9][0-9][0-9]") ] && echo "yes"
Run Code Online (Sandbox Code Playgroud)
str1 =“ABCDEFG-1234”
str2 =“ABCDEFG-1234 - 更多文本”
当我使用 str1 代替 str 时,一切正常并且打印 yes 。
当我使用 str2 代替 str 时,出现以下错误
[: ABCDEFG-1234: unary operator expected
Run Code Online (Sandbox Code Playgroud)
我对使用 bash 脚本还很陌生,因此我们将不胜感激。