簡體   English   中英

使用split從文件中的一行讀取特定的字符串

[英]Using split to read specific string from a line in a file

給定文本文件

為sample.txt

2012-01-01  09:00   San Diego   Men's Clothing    214.05    Amex
2012-01-01  09:00   San Diego   Women's Clothing  153.57    Visa
2012-01-01  09:00   Omaha       Music             66.08     Cash

我希望只能閱讀第三欄的文字。 這段代碼

for line in open("sample.txt"):
      city=line.split()[2]
      print(city)

可以一定程度地閱讀第三欄:

San
San
Omaha

但我想要的是:

San Diego
San Diego
Omaha

我該怎么做呢?

看起來您的文件似乎由制表符(或\\ t)分隔。

您是否嘗試過按選項卡拆分它?

嘗試使用city=line.split('\\t')[2]代替city=line.split()[2] city=line.split('\\t')[2]

無論如何,看起來該文件是由excel或類似工具生成的,您是否嘗試過將其導出為CSV(逗號分隔值)格式,而不是純txt?

然后,您可以簡單地按逗號分隔,例如city=line.split(',')[2]

希望能幫助到你

看來您的輸入文件具有固定的寬度字段。 在這種情況下,您也許可以使用索引來實現您的目標,例如

>>> for line in open('test.txt'):
...     print(line[20:32])
...
San Diego
San Diego
Omaha

如果需要進一步處理等,可以添加.strip()修剪尾隨空格。

您的文本文件至少用兩個空格定界,因此指定使用split()分割兩個空格並去除末端的其余空格是可行的。

with open('sample.txt', 'r') as file_handle:
    for line in file_handle:
        city=line.split('  ')[2].strip()
        print(city)

收益率:

San Diego
San Diego
Omaha

由於sample.txt中的項目大部分由2個空格分隔,因此您需要改用split(' ') 如果使用split() ,則默認情況下將拆分每個空格,例如將"Men's Clothing"變成["Men's", "Clothing"] ,這不是您想要的。

您可以做的第一件事是使用以下方法查看商品:

with open('sample.txt') as in_file:
    for line in in_file.readlines():
        items = [x.strip() for x in line.strip().split('  ') if x]
        print(items)

哪個輸出:

['2012-01-01', '09:00', 'San Diego', "Men's Clothing", '214.05', 'Amex']
['2012-01-01', '09:00', 'San Diego', "Women's Clothing", '153.57', 'Visa']
['2012-01-01', '09:00', 'Omaha', 'Music', '66.08', 'Cash']

現在,如果要提取第三列:

print(items[2])

這使:

San Diego
San Diego
Omaha

您需要通過添加將在split()函數中指定的split()符來預處理輸入文件。 像這樣:

2012-01-01,  09:00,   San Diego,   Men's Clothing,    214.05,    Amex
2012-01-01,  09:00,   San Diego,   Women's Clothing,  153.57,    Visa
2012-01-01,  09:00,   Omaha,       Music,             66.08,     Cash

然后

for line in open("sample.txt"):
  city=line.split(",")[2]
  print(city)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM