Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 打印特定行_Python_Grep - Fatal编程技术网

Python 打印特定行

Python 打印特定行,python,grep,Python,Grep,我有以下格式的数据: 1 "hi" 2 "hello" 3 "abc" 4-"def" 5(-hjs 6 "there" abc" "def" 7 "there1" 选项卡将1和“hi”分隔开。另一个选项卡将2和“hello”分开,而在3和“abc”之间没有这样的分开。与4-“def”和5(-hjs)类似 我想删除所有那些制表符不分隔数字和字符串的行 1 "

我有以下格式的数据:

     1     "hi"
     2     "hello"
     3 "abc"
     4-"def"
     5(-hjs
     6     "there" 
     abc"    "def"
     7     "there1"
选项卡将1和“hi”分隔开。另一个选项卡将2和“hello”分开,而在3和“abc”之间没有这样的分开。与4-“def”和5(-hjs)类似

我想删除所有那些制表符不分隔数字和字符串的行

     1     "hi"
     2     "hello"
     6     "there" 
     7     "there1"
我尝试使用grep“^*[0-9]”只存储那些包含数字的行(虽然它删除了abc,但无法删除其余的)。但是,它删除了所有行。是否可以使用linux命令/python只删除指定的行

我试着在python中通过检查是否存在拆分来实现这一点。但拆分对于形式为“abc”def的模式不起作用

我用一个制表符('\t')制表..那么我如何合并它…你能解释一下吗

grep '^[0-9]*\s\{4\}'
(前提是使用4个空格进行制表,如粘贴的示例所示)。

试试看

grep '^[0-9]*\s\{4\}'
(前提是使用4个空格进行制表,如粘贴的示例所示)。

使用:

输出:

>>> 
1     "hi"
2     "hello"
6     "there" 
7     "there1"
说明:

正则表达式模式尝试匹配该行

  • ^
    :这表示字符串(或行)的开头
  • \d
    :这意味着匹配单个数字字符
  • \t
    :这意味着匹配制表符
  • \S+
    :这意味着至少匹配一次非空白字符
您可以将正则表达式更改为如下内容:
r'^\d\s{4,}\s+'

这将添加一个
\s{4,}
,这意味着至少有4次空白字符(这是大多数表格的默认字符长度)

您还可以将它们组合成一个正则表达式,用于处理制表符转换为空白的情况:
r'^\d(\t |\s{4,})\s+
这将添加一个组,该组将查找覆盖所有基础的
\t
\s{4,}

使用:

输出:

>>> 
1     "hi"
2     "hello"
6     "there" 
7     "there1"
说明:

正则表达式模式尝试匹配该行

  • ^
    :这表示字符串(或行)的开头
  • \d
    :这意味着匹配单个数字字符
  • \t
    :这意味着匹配制表符
  • \S+
    :这意味着至少匹配一次非空白字符
您可以将正则表达式更改为如下内容:
r'^\d\s{4,}\s+'

这将添加一个
\s{4,}
,这意味着至少有4次空白字符(这是大多数表格的默认字符长度)

您还可以将它们组合成一个正则表达式,用于处理制表符转换为空白的情况:
r'^\d(\t |\s{4,})\s+
这将添加一个组,该组将查找
\t
\s{4,}
。它涵盖了您的所有基础。

如果您的版本支持
perl
正则表达式语法,您可以像这样使用它:

grep -P '^\d+\t+\S+' infile
它从行首(
^
)匹配一个数字(
\d+
),后跟一个或多个制表符(
\t+
),后跟一个非空格字符(
\S+

它产生:

1   "hi"
2   "hello"
6   "there" 
7   "there1"
如果您的版本支持
perl
正则表达式语法,您可以像这样使用它:

grep -P '^\d+\t+\S+' infile
它从行首(
^
)匹配一个数字(
\d+
),后跟一个或多个制表符(
\t+
),后跟一个非空格字符(
\S+

它产生:

1   "hi"
2   "hello"
6   "there" 
7   "there1"

使用
awk

awk '/^[0-9]+\t/' file

使用
awk
仅打印以一个或多个数字
[0-9]+
开头,后跟选项卡
\t
的行:

awk '/^[0-9]+\t/' file

只打印以一个或多个数字
[0-9]+
开头,后跟制表符
\t

的行。我正在使用制表符('\t')。因此,我如何将其合并…请您解释一下,
grep
在基本正则表达式语法(BRE)中的用法支持
\s
?@Birei但是在itI中我在哪里合并“\t”呢?我正在使用制表符('\t')。那么我该如何合并它呢…你能解释一下吗?
grep
的基本正则表达式语法(BRE)支持
\s
?@Birei但是在itI中我在哪里合并“\t”呢?我正在使用制表符('\t'))对于制表..那么我如何合并…您能解释一下吗?对不起,我没有使用5个空格字符,而是使用“\t”作为tab@JannatArora好的,您可以在正则表达式中使用
\t
。我使用的是一个制表符('\t')对于制表..那么我如何合并…您能解释一下吗?对不起,我没有使用5个空格字符,而是使用“\t”作为tab@JannatArora好的,您可以在正则表达式中使用
\t